我正在嘗試學習java編程語言,但是,我在java中的is-a relationship和has-a relationship之間有點困惑。可能有人指導我,請:)IS -A關係與HAS-A關係有什麼區別? Java
感謝
米蘭
我正在嘗試學習java編程語言,但是,我在java中的is-a relationship和has-a relationship之間有點困惑。可能有人指導我,請:)IS -A關係與HAS-A關係有什麼區別? Java
感謝
米蘭
的IS-A的關係是繼承。繼承的類被稱爲子類或子類。另一方面,HAS - A關係是組成
在OOP中,IS - A關係是完全繼承。這意味着,子類是一種父類。例如,一個蘋果是一種水果。所以你會延長水果來獲得蘋果。
class Apple extends Fruit{
.
.
}
另一方面,組合意味着創建引用其他對象的實例。例如,一個房間有一張桌子。 因此,您將創建一個教室,然後在該類中創建一個類型表的實例。
class Room{
:
Table table = new Table();
:
:
}
HAS-A關係是動態(運行時)綁定,而繼承是靜態(編譯時)綁定。 如果您只是想重複使用代碼,並且您知道兩者不是同一種類,請使用合成。例如,你不能從廚房烤箱。廚房HAS-A烤箱。 當你感覺像蘋果這樣的自然關係是水果使用繼承。
希望這可以消除你的困惑。
你可以爲HeadFirst Java進一步閱讀。
美孚是,一個酒吧:
public class Foo extends Bar{}
美孚擁有-一個酒吧
public class Foo {
private Bar bar;
}