哪一個是一個更好的做法,做這樣的事情擴展或傳遞作爲參數
public class A {
private B b;
public A() {
b = new B(this);
}
}
public class B {
private A a;
public B(A a) {
this.a = a;
}
}
或延長班,我真的感到困惑的區別除了具有「一」作爲一個字段。
哪一個是一個更好的做法,做這樣的事情擴展或傳遞作爲參數
public class A {
private B b;
public A() {
b = new B(this);
}
}
public class B {
private A a;
public B(A a) {
this.a = a;
}
}
或延長班,我真的感到困惑的區別除了具有「一」作爲一個字段。
這一切都取決於特定的情況。
讓我們假設甲類表示Car
,然後
如果乙是Engine
則應該使用的組合物(汽車具有發動機)
如果乙是RaceCar
那麼應該使用繼承(RaceCar是更好的汽車)
如果有疑問,軟件開發的當前趨勢是偏好構成而不是繼承。
謝謝,很好的解釋! – Joeav
這取決於你有什麼打算實現。 就像Win.ubuntu說的使用擴展的情況下貓/動物。 但是,如果你想有像汽車的東西有引擎,然後使用你的第二個例子。
它不好,以真實對象爲例 – Andrew
使用延伸當A是一種B.像貓一樣是動物。所以貓擴大動物。 – Kachna
這些日子的一般意見是*更喜歡構成而不是繼承*。 –