我有关于继承的问题。我的情况是这样的:使用派生类C++的方法的超类
我有两个类(AThisWay,AThatWay),我希望能够随时更换。他们都有相同的方法名称,但在方法内部做了不同的事情。他们的属性和方法被其他类使用(B)。 在开始时我只有AThisWay,它是B的超类,但现在我也有AThatWay,我想知道是否有可能使AThisWay和AThatWay成为子类ob B,这样我就不会对属性产生困惑,或者如果有一种方法可以随时改变B的超类。这方面的最佳做法是什么?
最佳 圣
编辑: 现在我做这种方式(注②仅从AThisWay派生),但我想B到也能够有时使用AThatWay的方法。就像AThisway和AThatWay是我的不同物理模型一样,我希望能够这样做我的微积分,有时候这样做只是为了测试我的模型。我现在看到的最快的方法是复制B并从AThatWay中派生出来,但这当然不是很好,也不容易调试。
class AThisWay {
public:
int aNumber
void aMethod() { aNumber = 1; }
}
class AThatWay {
public:
int aNumber
void aMethod() { aNumber = 2; }
}
class B: public AThisWay{
public:
int anOtherNumber
void otherMethod()
{
aMethod();
anOtherNumber = aNumber + 2;
}
}
阅读起来多态性,虚拟和重写函数以及派生类的基类指针。 – Ron
“基类指向派生类”是唯一的选择,还是有办法告诉B在构造它时使用了什么超类?^从B派生A更聪明吗?就像那样,如果没有它的子类,那么B类就不能做任何事情。 –
听起来像你需要* interface A *,被* class B *使用,并由那些* AXxxXxx *类实现。 (是的,即使没有明确的关键字,C++也支持接口的概念)。 – hyde