如何覆盖C#中继承的类属性? [英] How to override an inherited class property in C#?
本文介绍了如何覆盖C#中继承的类属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我学习了如何继承方法,通过向基类中的方法添加 virtual
,在新类中添加 override
类。
class bird
{
private virtual string fly =我可以!;
public string CanI(){return fly; }
}
class penguin:bird
{
private override string fly =不,我不能!
}
这会弹出一个错误,说修饰符 / code> /
重写
不应在此使用。
解决方案
fly
不是属性,它是一个字段。字段不可覆盖。您可以这样做:
class bird {
protected virtual string Fly {
get {
return是的,我可以!
}
}
public string CanI(){return Fly; }
}
class penguin:bird {
protected override string Fly {
get {
return不,我不能!
}
}
}
请注意, $
将会做这样的事情:
abstract class Bird {
public abstract bool CanFly {get; }
public string SayCanFly(){
if(CanFly){
return是的,我可以!
}
else {
return不,我不能!
}
}
}
class Penguin:Bird {
public override bool CanFly {
get {
return false;
}
}
}
class Eagle:Bird {
public override bool CanFly {
get {
return true;
}
}
}
I learned how to inherit methods by adding virtual
to the method in the base class and override
in the new class. But what do I do to inherit properties?
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!";
}
This pops an error, saying that modifiers virtual
/override
should not be used here.
解决方案
fly
is not a property, it is a field. Fields are not overrideable. You can do this:
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!";
}
}
}
Note that I had to mark fly
as protected
.
But even better, I would do something like this:
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#中继承的类属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文