多态的概念
通俗的来说,就是多种形态,具体指:去完成某个行为,当不同对象去完成时产生不同的状态
想要理解多态就需要了解
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

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

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

java多态
云姜.2026-02-07 16:53