考慮你有一個abstract base class
一個是從其他類X.面向對象的設計謎語
類重寫方法foo1
繼承。
有幾個其他類A1,A2,A3是concrete
類。所有具體類繼承方法foo1
。
方法foo1
幾乎就像應該適用於所有具體類的通用算法。
這是「幾乎」,因爲算法中存在一個例外條件,某些類只能說A1,A3需要在foo
的開始處放一些其他方法foo2
。對於A2我們不需要啓動foo2
。
問題是如果我如果我在類A中實現foo2
所有它的孩子也會繼承這個函數,這是不是很好的設計?
我想到將foo2
排除在一個接口之外,這個接口將由具體的類實現 - >但這並不好,因爲foo1
這叫foo2
在基類上!
任何想法如何以適當的方式解決這個問題?
謝謝
你可以做foo2的私人在A,而是增加其子類可以覆蓋一個受保護的虛擬財產,以及用於以一種確定的子類要調用foo2的在foo1的開頭。 –
我想我理解並且看到了一個解決方案,但是我認爲如果你在你的問題ala'抽象類MyShape {....'中添加了一些簡單的代碼會更好。我不確定我是否遵循,但這會有所幫助 –