gpt4 book ai didi

c# - 如何在 C# 中覆盖继承的类属性?

转载 作者:可可西里 更新时间:2023-11-01 03:05:53 25 4
gpt4 key购买 nike

我学会了如何通过向基类中的方法添加 virtual 并在新类中添加 override 来继承方法。但是我该怎么做才能继承属性呢?

class bird
{
private virtual string fly = "Yes, I can!";
public string CanI() { return fly ; }
}

class penguin : bird
{
private override string fly = "No, I can't!";
}

这会弹出一个错误,说明不应在此处使用修饰符 virtual/override

最佳答案

fly 不是一个属性,它是一个字段。字段不可覆盖。你可以这样做:

class bird {
protected virtual string Fly {
get {
return "Yes, I can!";
}
}
public string CanI() { return Fly; }
}

class penguin : bird {
protected override string Fly {
get {
return "No, I can't!";
}
}
}

请注意,我必须将 fly 标记为 protected

但更好的是,我会做这样的事情:

abstract class Bird {
public abstract bool CanFly { get; }
public string SayCanFly() {
if(CanFly) {
return "Yes, I can!";
}
else {
return "No, I can't!";
}
}
}

class Penguin : Bird {
public override bool CanFly {
get {
return false;
}
}
}

class Eagle : Bird {
public override bool CanFly {
get {
return true;
}
}
}

关于c# - 如何在 C# 中覆盖继承的类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412506/

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