我有3個班。他們有所有類似的整數,方法等...邏輯矛盾在課堂設計中背叛了OOP嗎?
class Country{
int a,b;
public:
Country();
void doSomething();
:
:
}
class Military : public Country {
public:
Power();
void doAnother();
void doAnother2();
:
:
}
class Technology : public Military{
public:
Technology();
void doAnother3();
:
:
}
假設這種繼承適合我的解決方案。但正如你所看到的,當我從國家創建軍事時,邏輯上它們之間沒有關係。我的意思是,軍隊不是一個國家。同樣來自國家的技術,問題也是一樣的。技術不是軍事也不是國家。
無論如何,這個解決方案對我來說是好的,它縮短了我的代碼,但是如果我這樣做,我會背叛面向對象的編程理念嗎?這是否是一個矛盾?
歡迎來到Stack Overflow!對於你的具體'doSomething'('tax()'?'signTreaty()'?),說'Technology tech; tech.doSomething()'?如果不是,那麼這個繼承不適合你的解決方案。 – 2012-04-17 15:02:52
FWIW,看起來你正在嘗試用'Power'構建一個'Military'。雖然這在哲學上可能是真實的,但它不是C++的價值。 – 2012-04-17 15:04:23
是的......甚至沒有'typedef軍事實力;'將在C++視圖中修復這個問題。 – Potatoswatter 2012-04-17 15:06:04