iT邦幫忙

DAY 17
1

只是路過 HTML5 系列 第 17

程式基礎概念─物件導向(繼承)

終於講到繼承了...

雖然說是繼承,但並不是父子關係。
兒子並不是爸爸。

繼承是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(程式碼再使用),不必重覆設計相同的行為屬性
讓程式設計者可以創造通用的程式碼,能以多種用途,分別用於許多不同的程式中。

補充:

  1. 如果定義與父類別相同名稱的方法,則會改寫 (override) 父類別的方法。
  2. Java的類別繼承限制是單一繼承。

參考:http://csm00.csu.edu.tw/0391/95OOP/inherit1.pdf


上一篇
程式基礎概念─屬性與修飾子
下一篇
程式基礎概念─建構子
系列文
只是路過 HTML5 30

1 則留言

0
allen0702
iT邦新手 2 級 ‧ 2019-08-14 16:07:32

男人是人
Person is Man?
Man is Person?

我要留言

立即登入留言