首页 > 编程语言 > 详细

疯狂Java讲义(十)---- 多态

时间:2017-01-19 02:03:53      阅读:214      评论:0      收藏:0      [点我收藏+]

  当把一个子类对象直接赋给父类引用变量时,编译时类型是父类类型,运行时类型是子类类型。当运行时调用该引用变量的方法时,其方法行为总是子类方法的行为,而不是父类方法行为,所以就出现了相同类型的变量,执行同一个方法时出现不同的行为特征,这就是多态。

  引用变量在编译阶段只能调用其编译时类型所具有的方法,但是运行时执行它运行时类型所具有的方法。因此,引用变量只能调用声明该变量时所用类里包涵的方法。

  • 强制类型转换

    如果需要让一个引用变量调用它运行时类型的方法(即子类的方法),则必须把这个引用变量强制类型转换为运行时类型,但在转换之前,最好先用instanceof 运算符判断是否可以成功转换,从而避免出现ClassCastException:

    eg.

if (objPri instanceof String) {
    String str = (String)objPri;
}

    instanceof运算符前一个操作符通常是一个引用对象,后一个操作符是一个类或接口,它用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。是返回true,不是返回false。

    instanceof运算符前面操作符的编译时类型要么与后面的类相同,要么是后面类的父类,否则会引起编译错误。

疯狂Java讲义(十)---- 多态

原文:http://www.cnblogs.com/IvySue/p/6298358.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!