2009-10-22 72 views
0

抽象基類(ABC)可以有數據來支持繼承它的類。 但是,考慮到它不可能實例化ABC的對象,編譯器如何處理這些數據的情況下,我們有許多派生類對象 繼承了ABC。數據是否與派生類對象相關聯?抽象基類和數據成員?它是如何工作的?

+1

它不是一個「家庭作業問題」,只是一直困擾着我 – Wawel100 2009-10-22 13:34:45

回答

0

如果您正在談論靜態數據,那麼該數據將保持與基類的關聯。無論有多少個不同的類從中派生,在內存中仍然只有一個該數據的實例。

非靜態數據將與該類的每個實例關聯。如果您創建該類的5個實例,則內存中將有5個該數據的實例,每個實例只能通過其關聯的實例進行訪問。

+0

因此,在ABC中聲明的非靜態數據與 派生類的每個實例關聯? – Wawel100 2009-10-22 13:33:13

+0

你是什麼意思關聯? – 2009-10-23 09:04:54

+0

我想我想了解的是,如果它不可能創建一個ABC的實例 如何編譯器處理非靜態ABC數據的不同實例? – Wawel100 2009-10-27 15:17:38

0

是的。

編譯器只能接受已經派生的實體類實例化的繼承類型。這是因爲

public void RunInstantiate() 
{ 
    IAbstract abc; 
    abc = new Implement(); 
} 

abc總是指向一個真正的對象(類型Implement的)。