java中关于“多态”的那些事!
java中关于“多态”的那些事!
谨记:面向抽象编程,不要面向过程编程
什么是多态?
多态是同一个行为具有多个不同表现形式或形态的能力。例如下面这张图:有人叫汽车,有人叫宝马,但是都是车,只是叫法不一致。再简单一点就是:就是用基类的引用指向子类的对象
多态的前提
继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
父类引用指向子类对象 ()
Animal 是 Dog和Cat的父类
多态缺点及解决方法
不能调用子类特有的方法
解决“不能调用子类特有的方法的”方法: 强制类型转换 (向上转型和向下转型)
强行转换问题:ClassCastException 类转型异常:例如:把一只猫变成一只狗的
“instanceof" 解决强制转换的问题:
instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:
boolean result = obj instanceof Class
其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。
注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。
多态优点
消除类型之间的耦合关系,提高代码的可维护性
举个例子(扩展性强),我需要换车去兜风;我就不用写多个方法,只需要改多态的引用对象即可,如果买了新车直接加一个类就可以啦!
把car的内存地址传入进去。
上一篇: 那些年意外看到的方法
下一篇: JS运行机制——运行原理