失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 面向对象10:多态性的使用 重载和重写的区别 多态性的实用意义

面向对象10:多态性的使用 重载和重写的区别 多态性的实用意义

时间:2019-12-30 05:49:26

相关推荐

面向对象10:多态性的使用 重载和重写的区别 多态性的实用意义

多态性的使用

1.多态性可以理解为一种事物的多种形态

2.何为多态性

对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用),如下:

Person p2=new Man();

虚拟方法调用:当调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法

3.堕胎的使用:虚拟方法调用

有了对象的多态性后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法

总结:编译看左边,执运行看右边(只适用于方法)

4.多态性的使用前提:

类的继承关系方法的重写

5.对象的多态性只适用于方法,不适用于属性。(属性编译和运行都看左边)

6.面试题:多态性是编译时行为还是运行时行为?

答:运行时行为。例子用随机数+猫狗羊动物来讲(1选猫,2选狗,3选羊,因为是随机数,所以只看代码无法确定是调用哪个动物的方法)

7.有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法,子类特有的属性和方法不能调用。

重载和重写的区别

多态性的实用意义

没有多态性,抽象类和接口就没有意义

没有多态性, 方法就不能适用于子类的对象,方法通用性极大缩小,就要造大量重载的方法,这是不现实的。

如果觉得《面向对象10:多态性的使用 重载和重写的区别 多态性的实用意义》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。