我有类BaseObject和InheritedObject从BaseObject继承。
在BaseObject中,我有字段" public int Id"。 在InheritedObject中,我有字段" public new long Id"。
问题: 创建InheritedObject的新实例时,是否存储在2个内存空间/块中的继承对象和基础对象?
更具体地说,我有地址0x001来存储BaseObject和地址0x100来存储InheritedObject。 And InheritedObject使用地址0x001引用BaseObject。
答案 0 :(得分:2)
假设c#,则创建两个离散字段。因此将分配两个内存空间。
添加new
修饰符时,会隐藏基类的字段。因此,当您访问具有派生类型的字段时,您将从InheritedObject
获取值并获取BaseObject.Id
的值,您可以通过基础对象类型访问它。
注意:您也可以在派生类中使用阴影时更改数据类型,因此很明显使用了单独的内存位置。