java父型別強轉子型別報錯
阿新 • • 發佈:2018-12-09
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 }
}
我看了網路上的一些說法是,如果要將父類物件強制轉換為子類型別,條件是該父類物件要是在子類的構造方法中構造出來的(其實就是子類物件!該子類物件轉成父類型別之後,再強轉成子類,這種情況下是允許的)