多态-polymorphism
多态:同类型对象,表现出的不同形态
多态的表现形式:
父类类型 对象名称 = 子类对象 Fu f = new Zi()
多台的前提:
1.有继承/实现
2.有父类引用指向子类对象
3.有方法的重写
多台的好处:
使用父类类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利
eg. https://img2024.cnblogs.com/blog/3659684/202602/3659684-20260220165309976-1454163087.png
多态调用成员的特点
变量调用:编译看左边,运行看左边
javac编译代码时,会看左边的父类有没有这个变量,如果有编译成功,运行时获取左边父类成员中变量的值
方法调用:编译看左边,运行看右边
javac编译代码时,会看左边的父类有没有这个方法,如果有编译成功,但运行的是子类中的方法
多态的优势
在多态的形势下,右边对象可以实现耦合,便于扩展和维护
方法定义的时候,使用父类类型作为参数,可以接受所有子类对象,体现多态的扩展性与便利
多态弊端:不能调用子类的特有功能
How to fix? 变回子类类型就好了(和强制转换很像)
Animal a = new Dog() ;
Dog d = (Dog)a ;
https://img2024.cnblogs.com/blog/3659684/202602/3659684-20260223095724391-1619214224.png
https://img2024.cnblogs.com/blog/3659684/202602/3659684-20260223095958185-784287350.png

浙公网安备 33010602011771号