Rob*_*Rob 17 c# inheritance class
我学习了如何通过添加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!";
}
Run Code Online (Sandbox Code Playgroud)
这会弹出一个错误,说这里不应该使用修饰符virtual/ override.
jas*_*son 30
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!";
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我必须标记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;
}
}
}
Run Code Online (Sandbox Code Playgroud)