Java 中的繼承(is-a)與組合(has-a)關係
IS-A 關係
IS-A 是一種表達方式,表示“這個物件是那個物件的一種型別”。讓我們看看如何使用 extends 關鍵字來實現繼承。
public class Animal {
}
public class Mammal extends Animal {
}
public class Reptile extends Animal {
}
public class Dog extends Mammal {
}現在,如果我們考慮 IS-A 關係,我們可以說:
- 哺乳動物 IS-A 動物
- 爬行動物 IS-A 動物
- 狗 IS-A 哺乳動物
- 因此:狗 IS-A 動物
透過使用 extends 關鍵字,子類將能夠繼承超類的所有屬性,除了超類的私有屬性。
我們可以透過使用 instanceof 運算子來確保哺乳動物實際上是動物。
示例
class Animal {
} class Mammal extends Animal {
} class Reptile extends Animal {
} public class Dog extends Mammal {
public static void main(String args[]) {
Animal a = new Animal();
Mammal m = new Mammal();
Dog d = new Dog();
System.out.println(m instanceof Animal);
System.out.println(d instanceof Mammal);
System.out.println(d instanceof Animal);
}
}這將產生以下結果:
輸出
true true true
HAS-A 關係
這些關係主要基於用法。這決定了某個類是否 HAS-A 某些東西。這種關係有助於減少程式碼重複和錯誤。
讓我們來看一個例子:
示例
public class Vehicle{ }
public class Speed{ }
public class Van extends Vehicle {
private Speed sp;
}這表明 Van 類 HAS-A 速度。透過為速度建立一個單獨的類,我們不必將屬於速度的整個程式碼放入 Van 類中,這使得可以在多個應用程式中重用 Speed 類。
在面向物件的功能中,使用者不需要關心哪個物件在執行實際工作。為了實現這一點,Van 類向 Van 類的使用者隱藏了實現細節。因此,基本上發生的事情是,使用者會要求 Van 類執行某個操作,而 Van 類將自行執行該操作或要求另一個類執行該操作。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP