以下代碼為例: 1public class Sample
2{
3 public static void main(String [] args)
4 {
5 A a = new B(); //父類A引用子類B的執行個體
6 if(a instanceof B)
7 System.out.println("對象 a 是類 B 的執行個體");
8 B b = (B)a; //向下轉型
9 if(b instanceof B)
10 System.out.println("對象 b 是類 B 的執行個體");
11 C c = new D(); //父類C引用子類D的執行個體
12 if(c instanceof D)
13 System.out.println("對象 c 是類 D 的執行個體");
14 D d = (D)c; //向下轉型
15 if(d instanceof D)
16 System.out.println("對象 d 是類 D 的執行個體");
17
18 }
19}
20
21class A
22{
23}
24
25class B extends A{}
26class C extends B{}
27class D extends C{}
向上轉型:1interface A
2{
3 abstract void method();
4}
1class B implements A
2{
3 public void method()
4 {
5 System.out.println("子類B的方法調用");
6 }
7}
1public class C
2{
3 public static void main(String [] args)
4 {
5 B b = new B();
6 A a = (A)b; //向上轉型
7 a.method();
8 }
9}
第6行,類的類型從子類B轉為父類A。
第7行,引用變數a與執行個體方法method()動態綁定,並實現(覆蓋)該方法。
引用:http://blog.sina.com.cn/u/462c6ebc0100058q
參考:《Java2全方位學習》第8章 深入Java物件導向程式設計