继承对象和基础对象是否存储在2个内存空间/块中?

时间:2014-05-07 10:38:27

标签: c# oop inheritance

我有类BaseObject和InheritedObject从BaseObject继承。

在BaseObject中,我有字段" public int Id"。 在InheritedObject中,我有字段" public new long Id"。

问题: 创建InheritedObject的新实例时,是否存储在2个内存空间/块中的继承对象和基础对象?

更具体地说,我有地址0x001来存储BaseObject和地址0x100来存储InheritedObject。 And InheritedObject使用地址0x001引用BaseObject。

1 个答案:

答案 0 :(得分:2)

假设c#,则创建两个离散字段。因此将分配两个内存空间。

添加new修饰符时,会隐藏基类的字段。因此,当您访问具有派生类型的字段时,您将从InheritedObject获取值并获取BaseObject.Id的值,您可以通过基础对象类型访问它。

注意:您也可以在派生类中使用阴影时更改数据类型,因此很明显使用了单独的内存位置。