終於講到繼承了...
雖然說是繼承,但並不是父子關係。
兒子並不是爸爸。
繼承是is-a,
“A是B”的關係,如 “男人是人”。
繼承-is-a
(is a kind of)
雖然說是繼承,但並不是父子關係。
兒子並不是爸爸。
這種繼承概念、具有階層式的結構。
例如:
動物和植物都(是)生物。
人和狗都(是)哺乳類,人和狗也都(是)動物,也都(是)生物。
鳥類(是)動物,也(是)生物。
再舉個例子:
如果現在有兩個類別Person和Man
男人是人 Person is Man
Man is a kind of Person
“A是B”的關係,如 “男人是人”,
表示人是一個較廣泛的類別,“男人“是“人“一個特別的種類;
“男人“因繼承具備了“人“的行為屬性外,
還可以定義自己特殊的行為屬性,
所以我們稱這種繼承功能是“特質化”。
所以Man有很多資訊可以繼承Person類別,
is-a的概念就是繼承,若以java來看,可以寫成:
//宣告出Person的類別
class Person{ }
//宣告出Man的類別,且繼承Person的屬性跟運作
class Man extends Person{ }
被繼承的類別叫“基礎類別” (base class)或“父類別”(super
class);
繼承別人的類別叫做“衍生類別”(derived class)或“子類別”(subclass)。
繼承 (inherit) 的機制可把共通的屬性 (field) 及方法 (method)
提出放在父類別 (superclass) ,
由子類別 (subclass) extends 父類別便可得到這些屬性及方法
子類別繼承父類別後會擁有父類別的特徵與行為能力,
例如剛才的例子就是: Man類別繼承Person類別,
Man就會俱備Person的特性(也就是說男人擁有人的特徵與能力) 。
目的: code reuse(程式碼再使用),不必重覆設計相同的行為屬性
讓程式設計者可以創造通用的程式碼,能以多種用途,分別用於許多不同的程式中。
補充:
參考:http://csm00.csu.edu.tw/0391/95OOP/inherit1.pdf