javase -- 向下转型


向上转型(多态性).

Person p = new Men();

向下转型(强制转换).

注意对象p 本质上仍然是 Men

Men m = (Men)p;

错误示范.

示范一: 兄弟类型

//Woman 和 Men 直接父类都是 Person
Person p = new Men(); // 向上转型
Women w = (Women) p;// 向下转型,报错ClassCastException,p本质是Men类型,不能转为Women

示范二:父子类型

//Men 是 Person的子类
Person p = new Person;// Person对象的实例化
Men m = (Men) p;// 向下转型,报错ClassCastException,p本质是Person,不能转为Men

小结.

  • 向下转型

    • 必须 先向上转型,再向下转型
    • 向下转型的对象(被强转的对象),本质上必须是对象引用(变量)同类型或者其子类


文章作者: liuminkai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuminkai !
评论
 上一篇
javase -- 包装类 javase -- 包装类
包装类(Wrapper). 基本数据类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Cha
2020-07-29
下一篇 
javase -- 对象的引用 javase -- 对象的引用
JAVA:”对象的引用“意思是定义一个变量,这个变量指向的是一个对象,所以叫对象的引用。 Object obj = new Object(); //obj:对象的引用 //new Object():对象 //Object:类
2020-07-29
  目录