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關鍵字,子類將能夠繼承超類的所有屬性,除了超類的私有屬性。
我們可以用instance運算子來確保哺乳動物實際上是一種動物。
示例
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類會自己執行該操作,或者要求另一個類執行該操作。
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP