我有这套课程:
节点(SUPER类)
| ------ NodeType1(Class)
| ---------- NodeType2(Class)
type1和type2有一些共同的字段(例如:NAME)。 如果我在SUPER类(Node)中声明NAME字段,我该如何访问类型类中的那些变量?我该如何制作这些房产? 谢谢你的时间
答案 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 modifier为public
或protected
,您就可以在派生类中访问它。修饰符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;
}
}