Java_多态

多态

同一个对象可以用多种形态(子类类型、父类类型)进行表示。

多态的前提
1.要有继承、实现的关系
2.要有方法重写
3.父类/接口接收子类对象

 Animal a = new Dog(); //Animal是Dog的父类  

 Usb u = new Mouse(); //Usb是Mouse的接口 

 

多态的成员访问特点

1.成员变量的访问特点
编译看左边(父类),运行也看左边(父类)
大白话:父类有就用父类的,父类没有就报错了

2.成员本方法的访问特点
编译看左边(父类),运行也看右边(子类)
大白话:子类复写父类方法,就执行子类的方法。

一句话总结:只有复写的方法看子类,其他的都看父类,父类没有就报错。

 

多态的好处和弊端

1.好处:提高了代码的扩展性
把方法的参数写成父类、接口,调用方法时可以传递任意的子类对象。

2.弊端:不能调用子类特有的方法。如果想调用可以进行强转(向下转型)

 

多态的转型

1 1.向上转型
2     Animal a=new Dog(); //多态的写法,就是向上转型
3 
4 2.向下转型
5     //判断变量a具体是什么类型
6     if(a instanceof Dog){
7         Dog dog=(Dog)a;
8         dog.swimming();
9     }

【注意:多态的转型并不是随意的,它是一个还原的动作。原本是什么类型,才能转换为什么类型】

3.多态转型可能会遇到的问题

 ClassCastException: 多态的转型出现的问题,类型转换错了 

  NullPointerExeption: 一个对象或者一个数组为null,使用null去调用方法或者访问元素。 

 

 

 

上一篇:Spring使用注解开发演变过程


下一篇:s-100与s-57电子海图的区别二 电子海开发一百篇第五十二篇