新手學JAVA(七)----Override VS Overload

來源:互聯網
上載者:User

標籤:override   overload   重載   覆蓋   重寫   

  • 一 Overload
  • 二 Override
  • 三 多態性

一. Overload

在同一個類中的許多方法可以擁有相同的名字,只要他們的參數聲明不同即可,這種方法被稱為重載。
舉個例子:

public class overload{    ‘‘‘一個重則輸出方法‘‘‘    void print(){        System.out.println("Hello!");        }    ‘‘‘重載上面的輸出方法,加上了參數‘‘‘    void print(String name)    {        System.out.println(name + ",Hello!");        }    ‘‘‘重載上面的輸出方法,加上兩個參數‘‘‘    void print(String name,int height){        System.out.println(name +",Hello!你有" + height + "cm高嗎?");    }    public static void main(String args[]){        overload ol = new overload();   ‘‘‘建立一個對象ol‘‘‘        ol.print();        ol.print("令仔");        ol.print("令仔",180);        }}

運行結果:

Hello!
令仔,Hello!
令仔,Hello! 你有180cm高嗎?

上面的執行個體中定義了3個同名的方法,但是卻有不同的參數類型和參數類型,使用重載其實就是避免繁多的方法名,有些方法的功能是相似的,如果重建立立一個方法,重新取個方法名稱,這回讓程式段顯得不容易閱讀。跟之前做系統的時候用到的SQLHelper挺像的。

重載的實質:

  • 方法名相同
  • 參數個數可以不同
  • 參數類型可以不同

當訪問一個重載方法時,首先編譯器會比較參數類型與實際調用方法中使用值得類型,已選擇正確的方法,如果發現沒有匹配的方法,則編譯器報錯。

二. Override

說到覆蓋,就要先說說物件導向三大特徵之一:繼承;在繼承的過程中,子類中可以直接使用父類所繼承下來的方法,但是當子類中有聲明了相同名稱的方法的話,調用的則是子類的方法,這就是所謂的覆蓋。
看個執行個體:

public class father{       ‘‘‘建立方法print()‘‘‘    void print(){        System.out.println("這是父類特性!");        }    public static void main(String args[]){         father f = new father();         son s = new son();         f.print();         s.print();        }}class son extends father{       ‘‘‘建立子類son繼承father‘‘‘    void print(){                 ‘‘‘覆蓋方法print()‘‘‘        System.out.println("這是子類特性!");        }    }

運行結果:

這是父類特性!
這是子類特性!

從上面的這段代碼可以看出,子類重新定義類父類的print()方法,子類的覆蓋方法與父類相同,知識方法體不一樣。

三. 多態性

多態就是擁有多種形態,在Java中,多態主要是指擁有相同的形式,但不同的參數實現不同的功能。
先說說重載:

‘‘‘建立一個學生類‘‘‘public class student{    student()    ‘‘‘無參數建構函式‘‘‘    {}    student(string name)   ‘‘‘帶一個參數的建構函式‘‘‘    {}    student (string name,string code)  ‘‘‘帶兩個參數的建構函式‘‘‘}

上面的三個例子是3個建構函式的重載函數,具有相同的形態,但是他們根據參數的不同,實現的功能也不同,這就是多態,所以說重載其實具有多態性,或者說,重載是多態的一種形式。

然後再說覆蓋,為什麼也具有多態性?因為父類的方法在子類中被重寫,多態就是擁有多種形態,子類和父類的方法名稱相同,只不過完成的功能不一樣,所以說覆蓋也具有多態性。
可以說重載和覆蓋是多態的兩種表現形式。

新手學JAVA(七)----Override VS Overload

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.