我已经读过,基类中的私有变量在技术上是由子类继承的,但是不可访问。
如果这是正确的,为什么我们说它们是继承的,大概只能通过反思来访问它们?
答案 0 :(得分:11)
子类化是关于继承实现;和字段是一个实现细节。
这些字段确实存在,并且可以通过反射获得。但最终,通过任何公共/受保护/等成员管理这些字段的状态是基类工作。
但最终 - 如果基类声明属性Foo
的属性(和字段),那么当您设置该属性时,数据必须到达某处。子类必须包含基类中的所有字段才有意义。这对于基于字段的序列化框架(例如BinaryFormatter
)也很重要。
答案 1 :(得分:1)
私有字段在某种意义上是继承的,它们在分配时会占用堆上的空间。但是,派生类无法直接访问它们。
答案 2 :(得分:0)
为什么我们说他们是继承的......
就个人而言,我没有。我认为继承包括你可以在子类中访问的那些东西,而不是那些被隐藏的东西。
我可以看到有人说要明确继承包含链中的所有元素,但它让我觉得过于迂腐而且不是特别有用。