多态:
定义:同一对象在不同时刻表现出的不同状态。
格式:Fu f = new (zi);
前提条件:1.要有继承。
2.要有方法重写。可以不重写,但是没有意义。
3.父类引用指向子类对象。
访问特点:
变量: 编译:执行等号左边 运行:执行等号左边 特点:加载到堆内存中
方法: 编译:执行等号左边 运行:执行等号右边 不调用不执行(因为运行时调的是堆中内容,故先访问的是等号右边内容)
静态方法:编译和运行都执行的是等号左边;因为他是随类加载而加载,在对象创建前加载,与多态关系不大。
总结:编译看左边,运行除方法看右边,其余都是看左边。
好处:
1.提高代码的维护性(由继承来保证)
2.提高了代码的扩展性(由多态来保证)
弊端:
父类不能访问子类的特有功能。
为了解决弊端的方法。
向上转型:父类引用指向子类对象 自动转换
向下转型:将一个父类引用转换成子类 格式:Zi z = (Zi)f; 前提:该父类引用必须是指向子类对象。 此时已不是多态。 |
|