SCJP認證 第二章-面向對象 2.2.1 IS-A關係

在OO中ISS概念基於類繼承或接口事項。IS-A是表達這句話的一種方式:”這個東西是那個東西的一種“。例如,Mustang(野馬)是一種馬,因此,以OO術語就可以說:"Mustang IS-A Horse"(野馬是一種馬),”Subaru IS-A Car“(斯巴魯是一種汽車),”Broccoli IS-A Vegetable“(椰菜是一種蔬菜)。在Java中,使用關鍵字extends(針對類繼承)和implements(針對接口實現)表達IS-A關係。

 

 Car(汽車) 是Vehicle(交通工具)的一種,因此繼承樹可能像下面這樣從Vehicle開始:

public class Vehicle {}

public class Car extends Vehicle{}

public class Subaru extends Car{}

在OO術語中,可以這樣說:

Vehicle是Car的超類

Car是Vehicle的子類

Car是Subaru的類。 

Subaru是Vehicle的子類。

Car繼承自Vehicle。

Subaru同時繼承自Vehicle和Car。

Subaru派生自Car。

Car派生自Vehicle。

Subaru派生自Vehicle。

Subaru同時是Vehicle和Car的一種子類型。 

 

 

回到我們的IS-A關係,下列陳述是正確的:

”Car extends Vehicle“ 指”Car IS-A Vehicle“

"Subaru extends Car" 指 "Subaru IS-A Car"

 

我們還可以說:“Subaru IS-A Vehicle” ,因爲是其繼承樹中上層任何一級的“一種類型”。如果表達式(Foo instanceof Bar)的結果爲true,則及時Foo被直接擴展Bar,而是擴展屬於Bar子類的某個其他類,也存在關係“類Foo IS-A Bar”。下圖說明了Vehicle、Car和Subaru的繼承樹。箭頭從子類指向超類。換句話說,類的箭頭指向他擴展自的那個類。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章