C# 继承初始化字段

C# 继承初始化字段,c#,inheritance,C#,Inheritance,C语言中有一种行为我真的不明白: 类动物{ 公共物种=动物; 公共空间引入{ Console.WriteLinespecies; } } 类别猫:动物{ 新的公共串物种=猫; //public void引入{Console.WriteLinespecies;} } 班级计划 { 静态环[]args { var cat=新cat; 猫。介绍; } } 这段代码在执行时输出>>>动物。 对我来说,因为Cat继承了Animal,所以在Cat实例的范围内调用Cat.improduct应该调用Animal

C语言中有一种行为我真的不明白:

类动物{ 公共物种=动物; 公共空间引入{ Console.WriteLinespecies; } } 类别猫:动物{ 新的公共串物种=猫; //public void引入{Console.WriteLinespecies;} } 班级计划 { 静态环[]args { var cat=新cat; 猫。介绍; } } 这段代码在执行时输出>>>动物。 对我来说,因为Cat继承了Animal,所以在Cat实例的范围内调用Cat.improduct应该调用Animal.improduct。我不明白为什么程序选择了动物的物种而不是猫的物种

我知道我可以使用变通方法,但我相信我在c设计中遗漏了一些要点,有人能解释一下这种行为吗

谢谢

我不明白为什么程序选择了动物的物种而不是猫的物种

因为新修改器隐藏了继承的物种成员。。。但只在Cat实例内部。您在基类上调用该方法,基类只知道它自己的物种成员

如果您给您的Cat类一个introducteCat方法,在该方法中打印它的种类并调用它,您将看到正在打印的Cat字符串

如果要重写派生类中的成员,必须在基类中将该成员标记为虚拟成员,然后在派生类中重写该成员。但不能对字段执行此操作,因此必须将其设置为属性

但您可能只想分配一个不同的值,您可以在构造函数中这样做

我不明白为什么程序选择了动物的物种而不是猫的物种

因为新修改器隐藏了继承的物种成员。。。但只在Cat实例内部。您在基类上调用该方法,基类只知道它自己的物种成员

如果您给您的Cat类一个introducteCat方法,在该方法中打印它的种类并调用它,您将看到正在打印的Cat字符串

如果要重写派生类中的成员,必须在基类中将该成员标记为虚拟成员,然后在派生类中重写该成员。但不能对字段执行此操作,因此必须将其设置为属性


但您可能只想分配一个不同的值,您可以在构造函数中这样做。

选中此项只需删除新项选中此项只需删除新项