基礎程式設計(16)-類別繼承

類別是物件的基礎原型,如果想要將這個原型做延伸擴充,可以使用類別繼承。利用生物分類可以稍微了解繼承的概念。例如靈長目(人類)和齧齒目(老鼠)都是屬於哺乳綱的一種,也就是說靈長目和齧齒目是子類別,同時”繼承”父類別哺乳綱的某些共同特性,但兩者之間又可以有區別。類別繼承的概念大概就是如此,不過實作上比較少出現。

類別繼承的Java語法如下:

class 子類別名稱 extends 父類別名稱
{
    //額外的屬性和方法
}

類別繼承的注意事項:

  • 子類別不能存取父類別的private屬性和方法。
  • 建構子不能被繼承,但子類別可以使用「super()」呼叫父類別的建構子。

覆寫和隱藏

如果父類別的屬性和方法不符合使用需求,可以在子類別宣告相同名稱、參數列的方法,或是名稱相同的屬性(形態不同也沒關係),以取代原本父類別的內容。子類別的用法和一般類別一樣,但可以利用「super.父類別屬性或方法名稱」來存取父類別的內容。所以當我們建立一個子類別的物件時,可以想像其實同時建立了兩個物件。即使名稱相同,透過super關鍵字仍然視為不同的兩個變數,一個在父類別,另一個在子類別。