2015-07-09 79 views
2

哪一個是一個更好的做法,做這樣的事情擴展或傳遞作爲參數

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; 
    } 
} 

或延長班,我真的感到困惑的區別除了具有「一」作爲一個字段。

+0

它不好,以真實對象爲例 – Andrew

+0

使用延伸當A是一種B.像貓一樣是動物。所以貓擴大動物。 – Kachna

+0

這些日子的一般意見是*更喜歡構成而不是繼承*。 –

回答

2

這一切都取決於特定的情況。

讓我們假設類表示Car,然後
如果Engine則應該使用的組合物(汽車具有發動機)
如果RaceCar那麼應該使用繼承(RaceCar是更好的汽車)

如果有疑問,軟件開發的當前趨勢是偏好構成而不是繼承。

+0

謝謝,很好的解釋! – Joeav

0
  • 繼承:應用IS-A測試。
  • 組成:應用HAS-A關係,
0

這取決於你有什麼打算實現。 就像Win.ubuntu說的使用擴展的情況下貓/動物。 但是,如果你想有像汽車的東西有引擎,然後使用你的第二個例子。