1. 程式人生 > >Android之重寫與過載

Android之重寫與過載

1、過載與重寫的區別

方法過載是指同一個類中的多個方法具有相同的名字,但這些方法具有不同的引數列表(引數的數量或者引數型別不能完全一樣)

方法重寫發生在子父類之間的,子類定義的方法與父類中的方法具有相同的方法名字相同的引數列表相同的返回型別

2.過載(Overloading)

理解:

  1. 方法過載讓類以統一的方式處理不同型別資料的一種手段。多個同名函式同時存在,具有不同的引數個數/型別。過載Overloading是一個類中多型性的一種表現
  2. Java的方法過載,就是在類中可以建立多個方法,它們具有相同的方法名字,但具有不同的引數和不同的定義(返回值型別),呼叫方法時通過傳入不同的引數個數和引數型別來決定使用哪個方法,這就是多型性。
  3. 過載的時候,方法名字要一樣,但引數型別和個數不一定相同,返回值型別可以相同也可以不同。無法以返回值型別作為區別過載函式的區分標準。

規則:

  1. 必須有不同的引數列表(引數型別或者個數)
  2. 返回值型別可以相同或者不同,但引數列表必須不同
  3. 可以有不同的訪問修飾符(final ,private,public)
  4. 可以丟擲不同的異常

3、重寫(Overriding)

理解:

  1. 父類與子類之間的多型性,對父類的函式進行重新定義。如果在子類中定義某方法與其父類具有相同的名稱和函式,我們就說該方法被重寫了。在Java中,子類可以直接繼承父類中的方法,而不需要重新編寫相同的方法
    。方法重寫又稱方法覆蓋。
  2. 若子類中的方法與父類中的方法具有相同的方法名、返回型別和引數列表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,表示該關鍵字引用了當前類的父類。
  3. 子類函式的訪問修飾符不能少於父類的。

規則:

  1. 引數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是過載。
  2. 返回的型別必須一直與被重寫的方法的返回型別相同,否則不能稱其為重寫而是過載。
  3. 訪問修飾符的限制一定要大於被重寫方法的訪問修飾符(public>protected>default>private)
  4. 重寫方法一定不能丟擲新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。例如:父類的一個方法申明瞭一個檢查異常IOException,在重寫這個方法是就不能丟擲Exception,只能丟擲IOException的子類異常,可以丟擲非檢查異常。