java的重載與重寫

來源:互聯網
上載者:User

重載(Overloading)

(1) 方法重載是讓類以統一的方式處理不同類型資料的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。

重載Overloading是一個類中多態性的一種表現。

(2) Java的方法重載,就是在類中可以建立多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。

調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法,這就是多態性。

(3) 重載的時候,方法名要一樣,但是參數類型和個數不一樣,傳回值類型可以相同也可以不相同。無法以傳回型別別作為重載函數的區分標準。

下面是重載的例子:
    //這是這個程式的第一種編程方法,在main方法中先建立一個Dog類執行個體,然後在Dog類的構造方法中利用this關鍵字調用不同的bark方法。

不同的重載方法bark是根據其參數類型的不同而區分的。

    //注意:除構造器以外,編譯器禁止在其他任何地方中調用構造器。
     public class Dog {
         Dog()
         {
                this.bark();
         }
         void bark()//bark()方法是重載方法
         {
                System.out.println(\"no barking!\");
                this.bark(\"female\", 3.4);
         }
         void bark(String m,double l)//注意:重載的方法的傳回值都是一樣的,
         {
                System.out.println(\"a barking dog!\");
                this.bark(5, \"China\");
         }
         void bark(int a,String n)//不能以傳回值區分重載方法,而只能以“參數類型”和“類名”來區分
         {
                System.out.println(\"a howling dog\");
         }

         public static void main(String[] args)
         {
                Dog dog = new Dog();
                //dog.bark(); [Page]
                //dog.bark(\"male\", \"yellow\");
                //dog.bark(5, \"China\");

                }

             }

重寫(Overriding)

(1)父類與子類之間的多態性,對父類的函數進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。

在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。

(2)若子類中的方法與父類中的某一方法具有相同的方法名、傳回型別和參數表,則新方法將覆蓋原有的方法。

如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。

(3)子類函數的訪問修飾許可權不能少於父類的;

重寫方法的規則

1、參數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是重載。

2、返回的類型必須一直與被重寫的方法的傳回型別相同,否則不能稱其為重寫而是重載。

3、存取修飾詞的限制一定要大於被重寫方法的存取修飾詞(public>protected>default>private)

4、重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。例如:

父類的一個方法申明了一個檢查異常IOException,在重寫這個方法是就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常。

重載的規則:

1、必須具有不同的參數列表;

2、可以有不同的傳回型別,只要參數列表不同就可以了;

3、可以有不同的存取修飾詞;

4、可以拋出不同的異常; 

重寫與重載的區別在於:

重寫多態性起作用,對調用被重載過的方法可以大大減少代碼的輸入量,同一個方法名只要往裡面傳遞不同的參數就可以擁有不同的功能或傳回值。

用好重寫和重載可以設計一個結構清晰而簡潔的類,可以說重寫和重載在編寫代碼過程中的作用非同一般.

 

 

                     

聯繫我們

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