我有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