天天看點

java方法重載與方法重寫的差別,java中方法的重載與重寫的差別

重載和重寫,這是兩個新概念,是兩個令我們容易混淆的概念。 方法重載(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的類可以有具有多個相同方法名的方法。編譯器可以通過方法的參數的類型和個數來區分他們。