多态性的使用
1.多态性可以理解为一种事物的多种形态
2.何为多态性
对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用),如下:
Person p2=new Man();
虚拟方法调用:当调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法
3.堕胎的使用:虚拟方法调用
有了对象的多态性后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法
总结:编译看左边,执运行看右边(只适用于方法)
4.多态性的使用前提:
类的继承关系方法的重写
5.对象的多态性只适用于方法,不适用于属性。(属性编译和运行都看左边)
6.面试题:多态性是编译时行为还是运行时行为?
答:运行时行为。例子用随机数+猫狗羊动物来讲(1选猫,2选狗,3选羊,因为是随机数,所以只看代码无法确定是调用哪个动物的方法)
7.有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法,子类特有的属性和方法不能调用。
重载和重写的区别
多态性的实用意义
没有多态性,抽象类和接口就没有意义
没有多态性, 方法就不能适用于子类的对象,方法通用性极大缩小,就要造大量重载的方法,这是不现实的。
如果觉得《面向对象10:多态性的使用 重载和重写的区别 多态性的实用意义》对你有帮助,请点赞、收藏,并留下你的观点哦!