C#中的类层次结构

时间:2009-12-31 13:35:28

标签: c# class hierarchy

我有这套课程:
节点(SUPER类)
| ------ NodeType1(Class)
| ---------- NodeType2(Class)

type1和type2有一些共同的字段(例如:NAME)。 如果我在SUPER类(Node)中声明NAME字段,我该如何访问类型类中的那些变量?我该如何制作这些房产? 谢谢你的时间

3 个答案:

答案 0 :(得分:3)

class Node
{
    public string Name { get; set; }
}

class NodeType1 : Node
{
    void SomeMethod()
    {
        string nm = base.Name;
    }
}

class NodeType2 : NodeType1
{
    void AnotherMethod()
    {
        string nm = base.Name;
    }
}

答案 1 :(得分:2)

如果name字段的access modifierpublicprotected,您就可以在派生类中访问它。修饰符public将使其对所有其他类可见,而protected将限制对派生类的可见性。

在任何一种情况下,您都可以像在当前类中声明的字段一样访问它:

this._name = "New Name";

如果您希望将其设为属性,请相应地设置其访问修饰符:

public class Node
{
     protected string Name { get; set; }
}

答案 2 :(得分:1)

您可以按照通常访问该字段的方式访问此字段,例如键入this.fieldName。不要忘记将此字段标记为protected以在继承者中显示,或public在继承者和课堂外可见。

class Node
{
    protected string protectedName;
}

class NodeType1 : Node
{
    public string Name
    {
        get
        {
            return protectedName;
        }
    }
}

class NodeType2 : NodeType1
{
    protected void Foo()
    {
        string bar = Name;
    }
}