重寫(Override)與重載(overload)

重寫的定義:子類需要修改從父類中繼承的方法的實現。

重寫的原則:

  1. 重寫方法的方法名稱、參數列表必須與原方法的相同,返回類型可以相同也可以是原類型的子類型(從Java SE5開始支持)。
  2. 重寫方法不能比原方法的訪問權限小。
  3. 重寫方法不能比原方法拋出更多的異常。
  4. 被重寫的方法不能是final類型(因爲final修飾的方法是無法重寫的),private類型(在其子類中只是新定義了一個方法,並沒有對其進行重寫),static類型(方法重寫是基於運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,所以概念上不適用。)。
重載的定義:讓類以統一的方式處理不同類型數據。

方法重載的原則:

  1. 方法名稱必須相同。
  2. 參數列表必須不同(個數不同、或類型不同、參數類型排列順序不同等)。
  3. 方法的返回類型可以相同也可以不相同。(僅僅返回類型不同不足以成爲方法的重載。)

重寫和重載的區別:

  1. 方法重寫要求參數列表必須一致,而方法重載要求參數列表必須不一致。
  2. 方法重寫要求返回類型必須一致(或爲其子類型),方法重載對此沒有要求。
  3. 方法重寫對方法的訪問權限和拋出的異常有特殊的要求,而方法重載在這方面沒有任何限制。
  4. 方法重寫只能用於子類重寫父類的方法,而方法重載不光可以用於子類重載父類的方法,還可以發生在同一類中。
  5. 父類的一個方法只能被子類重寫一次,而一個方法可以在所有的類中可以被重載多次。
發佈了41 篇原創文章 · 獲贊 59 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章