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

Java 重寫與過載

Java 重寫 ( Override )

1、重寫是發生在繼承當中,子類想改變這個方法的功能而進行的(我這麼認為的)。

2、方法的重寫規則

  1. 引數列表必須完全與被重寫方法的相同

  2. 返回型別必須完全與被重寫方法的返回型別相同

  3. 宣告為 final 的方法不能被重寫

  4. 宣告為 static 的方法不能被重寫,但是能夠被再次宣告。(這裡就算你在子類中重寫了,也無法呼叫,用的時候還是用的父類的)

  5. 父類的成員方法只能被它的子類重寫

  6. 訪問許可權不能比父類中被重寫的方法的訪問許可權更低。(至少要有和父親一樣的寬巨集的胸懷,這裡的訪問許可權指的是被訪問修飾符修飾的許可權)

  7. 構造方法不能被重寫(構造方法和方法是兩種不同的東西~)

  8. 如果不能繼承一個方法,就不能重寫這個方法。

  9. 子類和父類在同一個包中,那麼子類可以重寫父類中 除了 宣告為 private 和 final 的所有方法

  10. 子類和父類不在同一個包中,那麼子類 只能 重寫父類中的宣告為 public 和 protected 的非 final 方法

  11. 重寫的方法能夠丟擲任何非強制異常,無論被重寫的方法是否丟擲異常。但是,重寫的方法不能丟擲新的強制性異常,或者比被重寫方法宣告的更廣泛的強制性異常,反之則可以。(這個,我還沒怎麼試過。)


Java 過載 ( Overload )

1、過載是在一個類裡面,方法名字相同,而引數不同,返回型別可以相同也可以不相同。

2、每個過載的方法(或者建構函式)都必須有獨一無二的引數型別列表。

3、常用於構造器的過載。

4、過載的規則:

  1. 被過載的方法必須改變引數列表(就是裡面要傳的東西,必須不一樣,要麼是個數不同,要麼是種類不同)

  2. 被過載的方法可以改變返回型別

  3. 被過載的方法可以改變訪問修飾符

  4. 被過載的方法可以宣告新的或者更廣的檢查異常

  5. 方法能夠在同一類中或者一個字類中被過載

  6. 無法一返回值型別作為過載函式的區分標準


Java 過載 與 重寫 的區別 ?

(1)方法過載是一個類中定義了多個方法名相同,而他們的引數的數量不同或數量相同而型別和次序不同,則稱為方法的過載(Overloading)。

(2)方法重寫是在子類存在方法與父類的方法的名字相同,而且引數的個數與型別一樣,返回值也一樣的方法,就稱為重寫(Overriding)。

(3)方法過載是一個類的多型性表現,而方法重寫是子類與父類的一種多型性表現。


以上學習基於:www.runoob.com  如果侵權,請聯絡博主,立即刪除