文章出處

一、繼承的基本語法:

在Java語言中,用extends關鍵字表示一個類繼承了另一個類。例如:

 public class Sub extends Base{

       .......
             }

Sub類到底繼承了Base類的哪些東西呢?分為以下兩種情況:

① 當Sub類和Base類位于同一個包中:Sub類繼承Base類中public、Protected和默認訪問級別的成員變量和成員方法

② 當Sub類和Base類位于不同的包中:Sub類繼承Base類中public和protected訪問級別的成員變量和成員方法

注:

java語言不支持多繼承,即一個類只能直接繼承一個類,例如以下代碼會導致編譯錯誤:

class Sub extends Base1,Base2(......)

所有的Java類都直接或間接地繼承Java.lang.Object類。Object類是所有java類的祖先。

 

二、方法重載(OverLoad)

對于類的方法(包括從父類中繼承的方法),如果有兩個方法的方法名相同,但參數不一致,那么可以說,一個方法是另一個方法的重載方法

注:

重載方法必須滿足以下條件:

① 方法名相同

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

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

④ 方法的修飾符可以不相同

三、方法覆蓋(Override)

覆蓋方法必須滿足多種約束:

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

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

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

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

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

⑥ 子類可以定義與父類的靜態方法同名的靜態方法,以便在子類中隱藏父類的靜態方法

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

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

⑨ 父類的抽象方法可以被子類通過兩種途徑覆蓋:一是子類實現父類的抽象方法 二是子類重新聲明父類的抽象方法

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

四、方法覆蓋與方法重載的異同

相同點:

要求方法相同

都可以用于抽象方法和非抽象方法之間

不同點:

方法覆蓋要求參數簽名必須一致,而方法重載反之

方法覆蓋要求返回類型必須一致,而方法重載不做限制

方法覆蓋只能用于子類覆蓋父類的方法,方法重載用于同一個類的所有方法

方法覆蓋對方法的訪問權限和拋出的異常有特殊要求,而方法重載無限制

父類的一個方法只能被子類覆蓋一次,而一個方法在所在的類中可以被重載多次

五、super關鍵字

super和this關鍵字都可以用來覆蓋java語言的默認作用域,使被屏蔽的方法或變量為可見。

注:

在程序中,在以下情況會使用super關鍵字:

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

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

 

六、繼承的利弊和使用原則

利弊:

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

七、比較組合與繼承

 

1、使用繼承關系

從類A和類B中抽象出父類C,它包含了method1()和method2()、method3()方法。由于在類A和類B中都會訪問method2()方法。因此把method2()方法聲明為protected類型

2、使用組合關系


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()