【发布时间】:2009-12-31 13:35:28
【问题描述】:
我有这组课程:
节点(超级类)
|----- NodeType1(类)
|---------NodeType2(类)
type1 和 type2 有一些共同的字段(例如:NAME)。 如果我在 SUPER 类(节点)中声明 NAME 字段,我应该如何访问类型类中的这些变量?我怎样才能使这些财产? 感谢您的宝贵时间
【问题讨论】:
我有这组课程:
节点(超级类)
|----- NodeType1(类)
|---------NodeType2(类)
type1 和 type2 有一些共同的字段(例如:NAME)。 如果我在 SUPER 类(节点)中声明 NAME 字段,我应该如何访问类型类中的这些变量?我怎样才能使这些财产? 感谢您的宝贵时间
【问题讨论】:
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;
}
}
【讨论】:
如果name 字段的access modifier 是public 或protected,您将能够在派生类中访问它。修饰符public 将使其对所有其他类可见,而protected 将限制对派生类的可见性。
无论哪种情况,您都可以像访问当前类中声明的字段一样访问它:
this._name = "New Name";
如果您希望将其设为属性,则相应地设置它的访问修饰符:
public class Node
{
protected string Name { get; set; }
}
【讨论】:
您可以按照通常访问该字段的方式访问该字段,例如输入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;
}
}
【讨论】: