1. 程式人生 > >java父型別強轉子型別報錯

java父型別強轉子型別報錯

java父類物件強制轉換成子類型別報錯

public class Sub extends Sup{

public void show(){
    System.out.println("Sub's show");
}

}

public class Sup {

public void show(){
    System.out.println("Sub's show");
}

}

public class Test {

public static void main(String[] args) {

    Sub sub=new Sub();
    Sup sup=new Sup();

    //Sub sub2=(Sub) new Sup();//ClassCastException:父類不能轉子類

    sup=sub;
    System.out.println(sup instanceof Sub);//true 因為sup值賦的是Sub物件。
    sup.show();//Sub's show

    //此時將sup再強轉成子類(Sub)是可以的
    sub=(Sub) sup;
    sub.show();//Sub's show

}

}

我看了網路上的一些說法是,如果要將父類物件強制轉換為子類型別,條件是該父類物件要是在子類的構造方法中構造出來的(其實就是子類物件!該子類物件轉成父類型別之後,再強轉成子類,這種情況下是允許的)