public:
virtual void Func1(void){ cout<< “This is B::Func1 \n”}
};
class C : public A
{
public:
virtual void Func1(void){ cout<< “This is C::Func1 \n”}
};
// Example
main()
{
A a;
B b;
C c;
Test(&a); // 輸出This is A::Func1
Test(&b); // 輸出This is B::Func1
Test(&c); // 輸出This is C::Func1
};
如果基類A 定義如下:
class A
{
public:
virtual void Func1(void)=0;
};
那么函數Func1 叫作純虛函數,含有純虛函數的類叫作抽象基類。抽象基類只管定義純虛函數的形式,具體的功能由派生類實現。
結合“抽象基類”和“多態”有如下突出優點:
(1)應用程序不必為每一個派生類編寫功能調用,只需要對抽象基類進行處理即可。這一招叫“以不變應萬變”,可以大大提高程序的可復用性(這是接口設計的復用,而不是代碼實現的復用)。
(2)派生類的功能可以被基類指針引用,這叫向后兼容,可以提高程序的可擴充性和可維護性。以前寫的程序可以被將來寫的程序調用不足為奇,但是將來寫的程序可以被以前寫的程序調用那可了不起。
文章來源于領測軟件測試網 http://www.kjueaiud.com/