26 01 继承对象的相互转换和向下造型

1.一种是 同级类型转换,编译时期看声明类,运行时期看实际创建类

  Class A{}      Class B extends A{}   Class C extends A{} 详情请看https://www.cnblogs.com/xuwangqi/p/11102156.html中的Error2类

2.一种是多级继承类型转换,运行时期看是否有继承关系

     Class A{}      Class B extends A{}   Class C extends B{}

接下来就是详解

public class Compare {

    public static void main(String[] args) {
        //向上造型
        A a =new C();
        //编译的时候b的声明类是B a的声明类是A有继承关系所以编译可以通过
        //运行时期 b的实际创建类是B,a的实际创建类是C,运行时相等或者有继承关系要转换的是转换后的子类 例如 C是B的子类,运行也是对的
        B b=(B)a; //正确 向下造型需要向上造型的支持
        System.out.println("1");
        D d=(D)a; //强转出错
        System.out.println("2");
    }

}

class A{
    
}

class B extends A{
    
    
}
class C extends B{
    
    
}
class D extends C{
    
    
}

 

posted @ 2019-06-29 14:28  三十六烦恼风x  阅读(253)  评论(0编辑  收藏  举报