我正在使用.NET,但我想这可以扩展到其他语言......
因此,当子项继承一个类时,它会获取父项的成员变量和属性。假设有一个私有变量名称“mFirstName”,还有一个名为FirstName的ReadOnly属性,它从对象中获取FirstName的值。
我创建了另一个继承此父级的类,并且在子类中,我可以使用FirstName属性来获取子级中变量的值...但该变量的名称是什么?
或换句话说,在父类中有一个名为mFirstName的私有变量。你在子类中称为等效变量是什么?
答案 0 :(得分:0)
子类将继承所有字段,包括mFirstName
等私有变量。如果父类实现FirstName
属性来读取和写入私有mFirstName
变量,那么除非重写它,否则子类也是如此。但是,mFirstName
对于子类是不可见的,但FirstName
属性将 - 子类必须使用FirstName
的父类实现,或者,如果允许,则实现它使用覆盖的其他方式。
答案 1 :(得分:0)
这不是 name 的问题,而是辅助功能之一。
私有字段仍然是派生类的成员状态,它恰好是您无法通过名称直接访问的成员状态,除非派生类是基类的嵌套类。
public class Foo
{
private int bar;
public virtual void Do()
{
this.bar = 1;
}
private class DerivedFoo : Foo
{
public override void Do()
{
this.bar = 2;
}
}
}
在上面的示例中,该字段是私有的,但仍可由派生类访问。从Foo
继承的外部类不具备相同的功能。
因此字段的名称相同,并且该字段仍然是派生类的状态。 辅助功能完全取决于继承者。