Java 第9天面向對象(中) 重寫(Override)與重載(Overload) 理解

一、重寫(Override)

重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!

重寫的好處在於子類可以根據需要,定義特定於自己的行爲。 也就是說子類能夠根據需要實現父類的方法。

重寫方法不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的異常。例如: 父類的一個方法申明瞭一個檢查異常 IOException,但是在重寫這個方法的時候不能拋出 Exception 異常,因爲 Exception 是 IOException 的父類,只能拋出 IOException 的子類異常。
在面向對象原則裏,重寫意味着可以重寫任何現有方法。

二、方法重寫規則

  • 參數列表必須完全與被重寫方法的相同。

  • 返回類型與被重寫方法的返回類型可以不相同,但是必須是父類返回值的派生類(java5 及更早版本返回類型要一樣,java7 及更高版本可以不同)。

  • 訪問權限不能比父類中被重寫的方法的訪問權限更低。例如:如果父類的一個方法被聲明爲 public,那麼在子類中重寫該方法就不能聲明爲 protected。

  • 父類的成員方法只能被它的子類重寫。

  • 聲明爲 final 的方法不能被重寫。

  • 聲明爲 static 的方法不能被重寫,但是能夠被再次聲明。

  • 子類和父類在同一個包中,那麼子類可以重寫父類所有方法,除了聲明爲 private 和 final 的方法。

  • 子類和父類不在同一個包中,那麼子類只能夠重寫父類的聲明爲 public 和 protected 的非 final 方法。

  • 重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常。但是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常,反之則可以。

  • 構造方法不能被重寫。

  • 如果不能繼承一個方法,則不能重寫這個方法。

三、Super、return 關鍵字的使用

  • 當需要在子類中調用父類的被重寫方法時,要使用 super 關鍵字。
  • return 關鍵字的使用:
    1、使用範圍:使用在方法體當中。
    2、作用:
    1、 用來結束方法的。
    2、針對於有返回值類型的方法,使用return 數據方法返回所要的數據。

四、 重載(Overload)

重載(overloading) 是在一個類裏面,方法名字相同,而參數不同。返回類型可以相同也可以不同。

每個重載的方法(或者構造函數)都必須有一個獨一無二的參數類型列表。

最常用的地方就是構造器的重載。

五、方法重載規則:

  • 被重載的方法必須改變參數列表(參數個數或類型不一樣);
  • 被重載的方法可以改變返回類型;
  • 被重載的方法可以改變訪問修飾符;
  • 被重載的方法可以聲明新的或更廣的檢查異常;
  • 方法能夠在同一個類中或者在一個子類中被重載。
  • 無法以返回值類型作爲重載函數的區分標準。

六、總結

方法的重寫(Overriding)和重載(Overloading)是java多態性的不同表現,重寫是父類與子類之間多態性的一種表現,重載可以理解成多態的具體表現形式。

(1)方法重載是一個類中定義了多個方法名相同,而他們的參數的數量不同或數量相同而類型和次序不同,則稱爲方法的重載(Overloading)。
(2)方法重寫是在子類存在方法與父類的方法的名字相同,而且參數的個數與類型一樣,返回值也一樣的方法,就稱爲重寫(Overriding)。
(3)方法重載是一個類的多態性表現,而方法重寫是子類與父類的一種多態性表現。
在這裏插入圖片描述

如果我的博客對你有幫助、如果你喜歡我的博客內容,請“點贊” “評論”“收藏”一鍵三連哦!聽說點讚的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章