古詩詞大全網 - 成語大全 - 抽象類為什麽不能實例化?

抽象類為什麽不能實例化?

抽象類的概戀:

抽象類:就是包含有未定義的虛函數的類,也就是說只在類中聲明了壹個抽象類,但沒有具體定義,或者把虛函數定義為virtual void f()=0;這樣的形式。註意函數後有壹個=0。因此派生類必須實現這個函數,如果派生類沒有實現這個函數,則這個派生類也是抽象的。

抽象類為什麽不能實例化對象:因為抽象類中包含有沒有定義的函數,因此不能用抽象類來實例化對象。但可以聲明抽象類的指針指向派生類。

示例:

class A{public: virtual void f()=0;};? //聲明壹個抽象類

class B:public A{public: void f(){cout<<"B"<<endl;};

void main()

{A ma; //錯誤,因為類A是抽象類,含有未實現的函數f()。因此不能創建對象

B mb;

A *p=&mb; //可以創建抽象類的指針指向派生類對象。

}

抽象類往往用來表征對問題領域進行分析、設計中得出的抽象概念,是對壹系列看上去不同,但是本質上相同的具體概念的抽象。

通常在編程語句中用 abstract 修飾的類是抽象類。在C++中,含有純虛擬函數的類稱為抽象類,它不能生成對象;在java中,含有抽象方法的類稱為抽象類,同樣不能生成對象。

在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,並不是所有的類都是用來描繪對象的,如果壹個類中沒有包含足夠的信息來描繪壹個具體的對象,這樣的類就是抽象類。?[1]?

抽象類往往用來表征對問題領域進行分析、設計中得出的抽象概念,是對壹系列看上去不同,但是本質上相同的具體概念的抽象。?[1]?

比如,在壹個圖形編輯軟件的分析設計過程中,就會發現問題領域存在著圓、三角形這樣壹些具體概念,它們是不同的,但是它們又都屬於形狀這樣壹個概念,形狀這個概念在問題領域並不是直接存在的,它就是壹個抽象概念。而正是因為抽象的概念在問題領域沒有對應的具體概念,所以用以表征抽象概念的抽象類是不能夠實例化的。