1

我正在使用.NET,但我想这会扩展到其他语言......

所以当一个子类继承一个类时,它会得到父类的成员变量和属性。假设有一个私有变量名称“mFirstName”,并且有一个名为 FirstName 的 ReadOnly 属性,它从对象中获取 FirstName 的值。

我创建了另一个继承这个父类的类,在子类中我可以使用 FirstName 属性来获取子类中变量的值......但是那个变量的名称是什么?

或者换句话说,在父类中有一个名为 mFirstName 的私有变量。您将子类中的等效变量称为什么?

4

2 回答 2

0

子类将继承所有字段,包括私有变量,如mFirstName. 如果父类实现了FirstName读取和写入私有mFirstName变量的属性,那么子类也将如此,除非您覆盖它。 mFirstName但是,子类将看不到该属性,但该FirstName属性将 - 子类必须使用父类实现,FirstName或者如果允许,以某种其他方式实现它并覆盖。

于 2013-04-08T03:05:52.430 回答
0

这实际上不是名称问题,而是可访问性问题。

私有字段仍然是派生类的成员状态,它只是碰巧是成员状态,除非派生类是基类的嵌套类,否则您将无法通过名称直接访问。

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将不具有相同的能力。

所以字段名称相同,字段仍然是派生类的状态。可访问性完全取决于继承者。

于 2013-04-08T03:17:26.837 回答