java多态

多态的概念
通俗的来说,就是多种形态,具体指:去完成某个行为,当不同对象去完成时产生不同的状态
想要理解多态就需要了解
1.向上转型
2.子类和父类 有同名的覆盖/重写的方法
3.通过父类对象 调用父类和子类重写的方法。
4.满足以上三点 只能说明会发生动态绑定
5.什么是动态绑定,什么是静态绑定?
6.综上所述,才能理解什么是多态?----多态是一种思想,但很抽象。
多态实现条件
1.必须在继承体系下
2.子类必须要对父类方法进行重写
3.通过父类的引用调用重写的方法
多态体现:在代码运行时,当传递不同类对象时,会调用对应类的方法
向上转型
目的:将子类类型给到父类类型
继承:对共性进行抽取,让子类类型继承父类类型
有三种方法可以发生向上转型
方法1:直接赋值


我们可以看到一般来说,Animal类对应创建Animal对象。但在这里Animal却创建了Dog对象,这种情况叫做 向上转型****此时我们可以引用父类里面的成员变量, 但无法引用子类中的成员变量,以及成员方法。

当我们在父类与子类发生方法重写时,则可以引用子类的方法

父类的方法与子类的方法发生了重写
方法2:方法传参

我们可以自己写一个方法---将dog对象传给func方法,让 Animal类型的animal接收。也可以做到向上转型。
方法3:返回值向上转型

方法重写:


****动态绑定:在编译前时候认为Eat()方法是animal.Eat()的,但当编译时发现,子类Dog与父类的Eat()方法发生了重写,所以调用了子类Dog的Eat()方法。
****静态绑定:例如:方法的重载,在编译的时候就已经通过方法的参数,确定好调用哪个方法了。
重写注意事项:
1.被private修饰的方法不能重写
2.被static修饰的方法不能重写,被static修饰后叫做类,重写方法依赖对象
3.被final修饰的方法不能重写,此时这个方法叫做"密封方法"
4.子类的访问修饰权限要 >= 父类的访问修饰权限
5.方法的返回值可以不同但必须是父子类关系【父子类关系专业名词:协变类型】

思考题:重写与重载的相同点与不同点?
重写的作用:若干年前的手机只能打电话,而如今的手机在打电话的基础上还能录音,显示地区,视频通话等等。而在这个变化的过程中,我们不应该在原来的类上进行修改,因为原来的类还有用户在使用------正确的方法是:新建一个手机的类对这个功能进行方法重写,使得新方法能使用旧方法的属性,这样就达到我们的需求了。
12.4向下转型
将父类类型给子类(不安全!!!!)
12.5多态的优缺点

【使用多态的好处】
1.能降低代码的 圈复杂度 ,避免使用大量的if-else

如果不基于多态,实现代码如下:

基于多态,实现代码如下:

相关推荐
lly2024064 分钟前
Perl 数据库连接
开发语言
小白-Tester5 分钟前
2026最新Postman安装教程[简单易懂]附安装包
开发语言·lua
xiaoye37086 分钟前
某大厂java面试题一面20260313
java
啦啦啦_999918 分钟前
13. AI面试题之 Dify
java
春日见19 分钟前
端到端大模型自动驾驶
java·开发语言·驱动开发·docker·自动驾驶·计算机外设
rell33627 分钟前
机顶盒播放udp/rtp马赛克
java·网络·网络协议·udp
Arya_aa28 分钟前
多个对象通过集合实现io流的读写
java
A.A呐30 分钟前
【QT第三章】常用控件2
开发语言·qt
白云如幻38 分钟前
【JDBC】集合、反射和泛型复习-3
java·开发语言·jdbc
笨笨马甲41 分钟前
Qt 实现三维坐标系的方法
开发语言·qt