class B extends A{}
public class CastTest{
public static void main(String[] args){
A a = new B();
B b = (B)new A(); //不能通過IS-A的測試:A IS-A B
B bb = (B)a;
a = (A)new B();
}
}
Exception in thread "main" java.lang.ClassCastException: A
at CastTest.main(CastTest.java:6)
所以可證明物件轉型是看參考變數所指向的物件
==========================
class A{ void showA(){System.out.println("A");} }
class B extends A{ void showB(){System.out.println("B");} }
public class CastTest{
public static void main(String[] args){
A a = new B();
a.showA();
((B)a).showB(); //a看不到showB(),必須向下轉型
}
}
output:
A
B
method執行看型別,A要執行B的mothed,必須向下轉型成B
沒有留言:
張貼留言