讓我們考慮兩個類,SuperClass
和延伸它:構圖課堂;使用超級或子?
Class SuperClass{
int superDataMember;
}
Class SubClass extends SuperClass{
int subDataMember;
}
我需要另一個CompositeClass
類,可使用超或分組成根據某些標準。我的問題是:我應該使用
的
SuperClass
實例裏面CompositeClass
- 因此,我可以使用
SuperClass
實例或實例。 - 但是如果訪問
subDataMember
的方法在訪問的實例爲SuperClass
時會如何運行? 也許一個
instanceOf
檢查可能在每個方法的開始工作?Class CompositeClass { private SuperClass sc; public getSuperDataMember() {// some code} public getSubDataMember() { if (this.sc instanceOf SubClass) // some code } }
- 因此,我可以使用
內
CompositeClass
這樣的一個實例,我將失去訪問
SuperClass
實例的能力!Class CompositeClass { private SubClass sc; public getSuperDataMember() {// some code} public getSubDataMember() {// some code } }
實施的
CompositeClass
兩個版本,第一個是SuperCompositeClass
與SuperClass
一個實例,並擴展了先用實例的第二SubCompositeClass
!
只要遵循繼承和組成的規則。如果類具有「是」的關係,則繼承。如果類有「有」的關係,那麼組成。 – 2015-02-23 22:30:50
親愛的@JunedAhsan,在這種特殊情況下並不那麼簡單! – 2015-02-23 22:39:54
這取決於我們通過設計我們的類可以使事情變得多麼複雜;-) – 2015-02-23 23:15:32