如何向C#解释使用继承财产而不是父财产?
我继承了我孩子班的财产。但当我试图调用parent方法时,它总是使用它自己的(parent)属性。我如何解释c#使用继承财产如何向C#解释使用继承财产而不是父财产?,c#,class,variables,inheritance,C#,Class,Variables,Inheritance,我继承了我孩子班的财产。但当我试图调用parent方法时,它总是使用它自己的(parent)属性。我如何解释c#使用继承财产 class ParentClass { protected int autoinc; public ParentClass() { autoinc = 1000; } public Show() { Debug.Log("AutoInc = " + autoinc); } }
class ParentClass
{
protected int autoinc;
public ParentClass()
{
autoinc = 1000;
}
public Show()
{
Debug.Log("AutoInc = " + autoinc);
}
}
class ChildClass : ParentClass
{
protected int autoinc;
public ChildClass()
{
autoinc = 2000;
}
}
/* Calling code */
ChildClass cc = new ChildClass();
cc.Show();
// I need above code to show 2000, but it shown 1000.
对不起,这绝对是个愚蠢的问题。但我还是需要您的帮助。
autoinc
子类中的字段隐藏父类中同名字段的声明。只需从子类中删除该字段:
class ChildClass : ParentClass
{
public ChildClass()
{
autoinc = 2000;
}
}
请记住,使用继承时,子对象就是父对象。您不需要在子对象中定义父字段或其他成员,因为它们都已经在这里了。除非要隐藏或重写父类的某些成员。子类中的autoinc字段隐藏父类中同名字段的声明。只需从子类中删除该字段:
class ChildClass : ParentClass
{
public ChildClass()
{
autoinc = 2000;
}
}
请记住,使用继承时,子对象就是父对象。您不需要在子对象中定义父字段或其他成员,因为它们都已经在这里了。除非您想隐藏或重写父类的某些成员。这两个都不是属性,而是字段。它们非常不同,你必须理解它们的不同。字段不能是虚拟的-
ParentClass。Show
将始终使用在ParentClass
中声明的字段。但是为什么您试图声明两个具有不同值的字段,而不是在ChildClass
构造函数中将autoinc
的值设置为2000?VS应该显示一条警告,提示您应该使用new
关键字。不管你想做什么,我建议你用不同的方式来做。@JonSkeet是的,看,我已经更改了代码,在2000年之前在子类中初始化autoinc。但无论如何它显示了1000。@Epsiloncol:不,您的代码仍然在ChildClass
中声明一个单独的字段。删除该声明:您只需要一个字段。这两个字段都不是属性-它们都是字段。它们非常不同,你必须理解它们的不同。字段不能是虚拟的-ParentClass。Show
将始终使用在ParentClass
中声明的字段。但是为什么您试图声明两个具有不同值的字段,而不是在ChildClass
构造函数中将autoinc
的值设置为2000?VS应该显示一条警告,提示您应该使用new
关键字。不管你想做什么,我建议你用不同的方式来做。@JonSkeet是的,看,我已经更改了代码,在2000年之前在子类中初始化autoinc。但无论如何它显示了1000。@Epsiloncol:不,您的代码仍然在ChildClass
中声明一个单独的字段。删除该声明:您只需要一个字段。