A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

多态性
多态前提和体现:继承、方法重写,父类引用指向子类对象(反之不行)
多态的好处:程序的扩展性提高,父类固定不变子类是可以无限扩展的;维护性提高
多态的弊端:不能访问子类的特有功能
多态的意义:一个类型的引用在指向不同的对象时会有不同的实现;
同样一个对象,造型成不同的类型时,会有不同的功能。

多态调用中编译和运行时期的特性:
    非静态成员变量、静态成员变量:
        编译时期,看父类中有没有这个变量,有编译成功,没有编译失败
        运行时期,运行的是父类中的成员变量
    非静态成员方法:
        编译时期,看父类中有没有这个方法,有编译成功,没有编译失败
        运行时期,运行的是子类重写后的方法
    静态成员方法:
        编译时期,看父类中有没有这个方法,有编译成功,没有编译失败
        运行时期,运行的是父类中的方法(所以说静态方法不能算方法的重写)
总结:除非静态的方法以外,编译和运行都看父类;
只有非静态的方法,编译看父类,运行看子类。
多态调用中,方法必走子类重写
编译看左边,运行看右边
Fu f     =     newZi();

多态中的转型问题
向上转型:父类类型的引用指向子类对象;接口引用指向其实现类的对象
    Java编译器根据类型检查调用方法是否匹配
向下转型(强制转型):
可以通过强制类型转换将父类型变量转换为子类型变量,前提是该变量指向的对象确实是该子类类型。
也可以通过强制类型转换将变量转换为某种接口类型,前提是该变量指向的对象确实实现了该接口。
如果在强制转换过程中出现违背上述两个前提,将会抛出ClassCastException
instanceof 关键字
    为避免在强转中出现 ClassCastException 异常,可以通过 instanceof 关键字判断某个引用指向的对象是否为指定类型。

1 个回复

倒序浏览
sfgjys 来自手机 中级黑马 2015-9-26 00:41:54
沙发
感觉好全面
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马