Java的動態綁定機制

來源:互聯網
上載者:User

標籤:void   log   ring   color   5.0   運行   name   沒有   聲明   

Java的動態綁定又稱為運行時綁定。意思就是說,程式會在啟動並執行時候自動選擇調用哪兒個方法。

一、動態綁定的過程:

  例子:

public class Son extends FatherSon son = new Son();son.method();

  1. 首先,編譯器根據對象的宣告類型和方法名,搜尋相應類(Son)及其父類(Father)的“方法表”,找出所有訪問屬性為public的method方法。

    可能存在多個方法名為method的方法,只是參數類型或數量不同。

  2. 然後,根據方法的“簽名”找出完全符合的方法。

    方法的名稱和參數列表稱為方法的簽名。

    在Java SE 5.0 以前的版本中,覆蓋父類的方法時,要求傳回型別必須是一樣的。現在子類覆蓋父類的方法時,允許其傳回型別定義為原始類型的子類型。

public Father getFather(){...}  //父類中的方法public Son getFather(){...}     //子類覆蓋父類中的getFather()方法

  3. 如果是private、static、final 方法或者是構造器,則編譯器明確地知道要調用哪兒個方法,這種調用方式成為“靜態調用”。

  4. 調用方法。

    如果子類Son中定義了 method() 的方法,則直接調用子類中的相應方法;如果子類Son中沒有定義相應的方法,則到其父類中尋找method()方法。

二、Demo

  1. 子類重寫父類中的方法,調用子類中的方法

public class Father{    public void method(){        System.out.println("父類方法:"+this.getClass());    }}public class Son extends Father{    public void method(){       System.out.println("子類方法"+this.getClass());    }    public static void main(String[] args){        Father instance = new Son();        instance.method();    }}//結果:子類方法:class Son

2. 子類沒有重寫父類中的方法,所以到父類中尋找相應的方法

public class Father{    public void method(){        System.out.println("父類方法:"+this.getClass());    }}public class Son extends Father{    public static void main(String[] args){        Father instance = new Son();        instance.method();    }}//結果:父類方法:class Son

三、動態綁定只是針對對象的方法,對於屬性無效。因為屬性不能被重寫。

public class Father{    public String name = "父親屬性";}public class Son extends Father{    public String name = "孩子屬性";    public static void main(String[] args){        Father instance = new Son();        System.out.println(instance.name);    }}//結果:父親屬性

 

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.