抽象基类和数据成员?它是如何运作的?

问题描述 投票:0回答:2

抽象基类(ABC)可以拥有数据来支持继承它的类。 然而,鉴于不可能实例化 ABC 的对象,在我们有许多派生类对象的情况下,编译器如何处理这些数据 继承ABC。数据是否与派生类对象相关联?

inheritance abstract-class
2个回答
0
投票

如果您谈论的是静态数据,那么该数据将保持与基类的关联。无论有多少个不同的类派生自该数据,内存中仍然只会有一个该数据的实例。

非静态数据将与该类的每个实例相关联。如果您创建该类的 5 个实例,则内存中将存在该数据的 5 个实例,每个实例只能通过其关联的实例进行访问。


0
投票

是的。

编译器只能接受已用派生的实体类实例化的继承类型。这是因为

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

abc
将始终指向真实对象(类型为
Implement
)。

© www.soinside.com 2019 - 2024. All rights reserved.