我有關於繼承的問題。我的情況是這樣的:使用派生類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