2009-10-22 75 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的)。