Java編程:多態和向上轉型

來源:互聯網
上載者:User
以下代碼為例:  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物件導向程式設計

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.