1.多类的体现
父类的引用指向了子类的对象
也就是说父类的引用接收自己的子类对象
2.多态的前提
必须是类与类之间有关系,要么继承extends,要么实现implements
通常还有前提:存在覆盖
3.多态的好处:
多态的出现大大的提高了程序的扩展性
4.多态的弊端:
提高了扩展性,但是只能使用父类的引用访问父类的成员
5.多态的应用
6.多态的出现,代码中的特点(多态使用的注意事项)
千万不要将父类的对象转为子类的对象,
注意,我们可以转换的是父类引用指向自己子类对象时,该引用可被提升,也可被强制转换
规律:多态自始至终都是子类对象在做着变化
多态的代码特点(注意事项)
在多态中父类引用指向子类对象时:
一:非静态成员函数的特点
1.在编译时,参阅,引用型变量(f)所属的类(class Fu)中是否有调用方法。
如果有则编译通过,如果没有则编译失败
2.在运行时期,参阅对象(new Zi())所属类(class Zi)中是否有调用方法
总结:成员函数在多态调用时,编译看左边,运行看右边
二:面试环节:
1)在多态中成员变量的特点
无论编译和运行都参考左边
2)在多态中静态成员函数的特点
无论编译和运行都参考左边
原因:因为静态函数可以被类调用,不需要对象,而父类引用指向子类对象时,只要引用不变还是父类
,所以就还用父类的方法,当静态进入时,就已经绑定在了类中,Fu.method4(),静态绑定而非静
态则是this.method();this是指本类对象 |
|