gpt4 book ai didi

c# - 是否可以在子类上定义成员而不在抽象父类上定义它? C#

转载 作者:太空狗 更新时间:2023-10-29 21:24:52 24 4
gpt4 key购买 nike

澄清一下,子类的所有成员都在其上方的抽象类上声明真的是强制性的吗?

可能是这样的:

public abstract class MyParent
{
public int x { get; set; }
}
public class MyChild : MyParent
{
public int x { get; set; }
public string MyName { get; private set; }
}

这只是一个例子......在这种情况下,属性MyName没有定义在父类中,而是在子类中......这可能吗?

提前致谢!

最佳答案

是的,您可以在子类中声明额外的属性和方法。

但是,如果您使用声明为祖先类型的变量,您将只能通过该变量访问祖先类型中定义的成员。获得子类的特殊内容的唯一方法是向下转换为子类型。

顺便说一句:子类应该复制祖先中的声明。您在这里的 int x 属性会导致问题,因为会有两个不同的 x 属性在运行。

需要一个具体的(非抽象的)子类来覆盖抽象祖先中声明的任何虚拟方法或属性。 Virtual 和 override 都需要在声明中使用特定的关键字。

关于c# - 是否可以在子类上定义成员而不在抽象父类上定义它? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4979245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com