簡單的總結了一下java方法繼承,方法重載,方法覆蓋的內容,如下:

  1、方法覆蓋:如果在子類中定義一個方法,其名稱、返回類型及參數簽名正好與父類中某個方法的名稱、返回類型及參數簽名相匹配,那么可以說,子類的方法覆蓋了父類的方法。

  子類的方法名稱返回類型及參數簽名 必須與父類的一致

  子類方法不能縮小父類方法的訪問權限

  子類方法不能拋出比父類方法更多的異常

  方法覆蓋只存在于子類和父類之間,同一個類中只能重載

  父類的靜態方法不能被子類覆蓋為非靜態方法

  子類可以定義于父類的靜態方法同名的靜態方法,以便在子類中隱藏父類的靜態方法(滿足覆蓋約束),

  而且Java虛擬機把靜態方法和所屬的類綁定,而把實例方法和所屬的實例綁定。

  父類的非靜態方法不能被子類覆蓋為靜態方法

  父類的私有方法不能被子類覆蓋

  父類的抽象方法可以被子類通過兩種途徑覆蓋(即實現和覆蓋)(P169)

  父類的非抽象方法可以被覆蓋為抽象方法

  2、方法繼承:利用extends關鍵字一個方法繼承另一個方法,而且只能直接繼承一個類。

  當Sub類和Base類在同一個包時Sub類繼承Base類中的public/protected/默認級別的變量個方法

  在不同包時繼承public/protected級別的變量和方法。

  3、方法重載:如果有兩個方法的方法名相同,但參數不一致,哪么可以說一個方法是另一個方法的重載。

  方法名相同

  方法的參數類型,個數順序至少有一項不同

  方法的返回類型可以不相同

  方法的修飾符可以不相同

  main方法也可以被重載

  4、Super關鍵字:super和this關鍵字都可以用來覆蓋Java語言的默認作用域,使被屏蔽的方法或變量變為可見(三種情況下的不可見P171)。

  父類的成員變量和方法為private使用super訪問編譯出錯

  在類的構造方法種,通過super語句調用這個類的父類的構造方法

  在子類種訪問父類的被屏蔽的方法和屬性

  只能在構造方法或實例方法內使用super關鍵字,而在靜態方法和靜態代碼塊內不能使用super

  5、繼承的利弊和使用原則:

  集成數的層次不可太多

  集成數的上層為抽象層

  (1)定義了下層子類都用友的相同屬性和方法,并且盡可能默認實現,從而提高重用性

  (2)代表系統的接口,描述系統所能提供的服務

  繼承關系最大的弱點:打破封裝

  精心設計專門用于被繼承的類

  (1)對這些類必須提供良好的文檔說明

  (2)盡可能的封裝父類的實現細節,把代表時間細節的屬性和方法定義為private類型

  (3)如果某些實現細節必須被子類訪問,定義為protected類型  (4)把不允許子類覆蓋的方法定義為final類型

  (5)父類的構造方法不允許調用可被子類覆蓋的方法

  (6)如果某些類不是專門為了繼承而設計,那么隨意繼承它是不安全的

  6、多態:

  對于一個引用類型的變量,Java編譯器按照它的聲明的類型來處理

  對于一個引用類型的變量,運行時Java虛擬機按照它的實際引用的對象來處理

  運行時環境中,通過引用類型變量來訪問所引用對象的方法和屬性時,Java虛擬機采用以下綁定規則

  1)實例方法與引用變量實際引用的對象的方法綁定,屬于動態綁定

  2)靜態方法與引用變量所聲明的類型的方法綁定,屬于靜態綁定

  3)成員變量(包括靜態和實例變量)與引用變量所聲明的類型的成員變量綁定,屬于靜態綁定