下面我为大家讲解一下JAVA基础之多态,希望大家喜欢。
多态就是事物存在的多种形态,比如你在大街上看见一只藏獒,你可以说这只藏獒真凶猛,也可以说这只狗真凶猛,还可以说这个动物真凶猛,以上三种说法其实都是指的这只藏獒。
在Java里面,也是存在多态的,只要全部符合下面这三种情况,就是多态
有继承
有方法重写
有父类引用指向子类对象
例如下面代码就构成多态
定义一个Animal类

定义一个Cat类继承Animal

定义一个Dog类继承Animal

上面的三个类里面已经有继承和方法重写了,那么父类引用指向子类对象是什么?请看下面这段代码:
定义一个测试类

静态绑定和动态绑定
上面代码中,a1是Animal类型的一个引用,指向的是其子类Cat的对象,这个就叫做父类引用指向子类对象。程序在编译的时候a1被看做Animal类型,所以a1.eat()绑定的是Animal类中的eat()方法,这叫做静态绑定,程序运行时,a1指向的是堆中的Cat对象,而在Cat中对eat()方法进行了重写,所以在运行阶段绑定的是Cat中的eat()方法,这叫做动态绑定。
强制类型转换
上面代码中子类向父类型进行转换,是自动类型转换,也叫做向上转型。还有一种情况是父类向子类型转换,是强制类型转换,也叫向下转型。下面的代码演示了强制类型转换

instanceof关键字
上面的代码里面将一个指向Dog对象的Animal引用a2进行强制转换成Cat类型时报出了ClassCastException类转型错误,开发中要是想避免这种错误需要使用instanceof来判断一下。

多态的优点
提高了程序的扩展性
降低了代码之间的耦合
请看下面示例:
新建一个Car类

创建一个Benz类继承Car

创建一个BMW类继承Car

创建一个Person类用来开车

创建一个测试类

在工作当中尽量面向抽象编程,不要面向具体编程。
此上就是我对多态的详细解释,感谢大家喜欢。希望大家多多纠错。

本文深入解析Java中的多态性,包括继承、方法重写、父类引用指向子类对象、静态与动态绑定、强制类型转换及instanceof关键字。通过实例展示多态如何提高程序扩展性和降低耦合度,强调在实际编程中应面向抽象编程。
766

被折叠的 条评论
为什么被折叠?



