欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java中关于“多态”的那些事!

程序员文章站 2024-02-29 23:31:40
...

java中关于“多态”的那些事!

谨记:面向抽象编程,不要面向过程编程

什么是多态?

多态是同一个行为具有多个不同表现形式或形态的能力。例如下面这张图:有人叫汽车,有人叫宝马,但是都是车,只是叫法不一致。再简单一点就是:就是用基类的引用指向子类的对象

java中关于“多态”的那些事!

多态的前提

继承

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

重写

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

父类引用指向子类对象 ()

Animal 是 Dog和Cat的父类java中关于“多态”的那些事!

多态缺点及解决方法

不能调用子类特有的方法

解决“不能调用子类特有的方法的”方法: 强制类型转换 (向上转型和向下转型)
强行转换问题ClassCastException 类转型异常:例如:把一只猫变成一只狗的
java中关于“多态”的那些事!
java中关于“多态”的那些事!
“instanceof" 解决强制转换的问题:
  instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:

boolean result = obj instanceof Class

其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。

注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。

多态优点

消除类型之间的耦合关系,提高代码的可维护性
举个例子(扩展性强),我需要换车去兜风;我就不用写多个方法,只需要改多态的引用对象即可,如果买了新车直接加一个类就可以啦!
java中关于“多态”的那些事!
java中关于“多态”的那些事! 把car的内存地址传入进去。

java中关于“多态”的那些事!