java中方法的重載與重寫的區別

來源:互聯網
上載者:User
  重載和重寫,這是兩個新概念,是兩個令我們容易混淆的概念。
方法重載(overloading method) 是在一個類裡面,方法名字相同,而參數不同。傳回型別呢?可以相同也可以不同。
方法重寫(overiding method) 子類不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。

方法重載是讓類以統一的方式處理不同類型資料的一種手段。Java的方法重載,就是在類中可以建立多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同個數和類型的參數來決定具體使用哪個方法, 這就是多態性。

方法重寫:在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。 若子類中的方法與父類中的某一方法具有相同的方法名、傳回型別和參數表,則新方法將覆蓋原有的方法。 如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類

重寫方法的規則:
     參數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是重載.
     返回的類型必須一直與被重寫的方法的傳回型別相同,否則不能稱其為重寫而是重載.
存取修飾詞的限制一定要大於被重寫方法的存取修飾詞(public>protected>default>private)
    重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常.例如,
父類的一個方法申明了一個檢查異常IOException,在重寫這個方法是就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常.
重載的規則:
  必須具有不同的參數列表;
  可以有不同的傳回型別,只要參數列表不同就可以了;
  可以有不同的存取修飾詞;
  可以拋出不同的異常;

注意,Java的方法重載要求同名的方法必須有不同的參數表,僅有傳回型別不同是不足以區分兩個重載的方法。重寫方法只能存在於具有繼承關係中,重寫方法只能重寫父類非私人的方法。

下面分別舉一個例子來說明方法重載:
public class TestOverLoad{
           public static void main(String[] args) {
                    Test test = new Test();
                     test.print(null);  
           }
}
class Test{
           public void print(String some){
                      System.out.println("String version print");
           }
           public void print(Object some){
           System.out.println("Object version print");
           }
}
      該程式輸出的結果是String version print。這個題目明顯是考察方法重載的,重載使得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.