C# 在派生类中重写toSting
我有一个抽象类C# 在派生类中重写toSting,c#,overriding,abstract-class,tostring,C#,Overriding,Abstract Class,Tostring,我有一个抽象类Animal看起来像这样 abstract class Animal{ protected int numberOfPaws; public abstract String speak(); public String toString(){ return "I have " + numberOfPaws + " paws"; } } class Cow : Animal{ public Cow : base(4) {}
Animal
看起来像这样
abstract class Animal{
protected int numberOfPaws;
public abstract String speak();
public String toString(){
return "I have " + numberOfPaws + " paws";
}
}
class Cow : Animal{
public Cow : base(4) {}
public override String speak(){
return "Moo!";
}
public new Strinf toString(){
return "I am a Cow " + base.toString();
}
}
void Main{
Cow c = new Cow();
Console.WriteLine(c.toString());
}
然后我有一个派生类,它有一个新的toString()
实现,如下所示
abstract class Animal{
protected int numberOfPaws;
public abstract String speak();
public String toString(){
return "I have " + numberOfPaws + " paws";
}
}
class Cow : Animal{
public Cow : base(4) {}
public override String speak(){
return "Moo!";
}
public new Strinf toString(){
return "I am a Cow " + base.toString();
}
}
void Main{
Cow c = new Cow();
Console.WriteLine(c.toString());
}
我有一个像这样的主视图
abstract class Animal{
protected int numberOfPaws;
public abstract String speak();
public String toString(){
return "I have " + numberOfPaws + " paws";
}
}
class Cow : Animal{
public Cow : base(4) {}
public override String speak(){
return "Moo!";
}
public new Strinf toString(){
return "I am a Cow " + base.toString();
}
}
void Main{
Cow c = new Cow();
Console.WriteLine(c.toString());
}
但是当我运行这个程序时,它会将UserQuery+Cow
打印到控制台
我不知道我做错了什么?它这样做是因为
base.toString()
吗?使用覆盖
关键字:
abstract class Animal
{
protected int numberOfPaws;
public abstract String speak();
public override string ToString(){
return "I have " + numberOfPaws + " paws";
}
}
class Cow : Animal
{
public Cow : base(4) {}
public override String speak(){
return "Moo!";
}
public override string ToString(){
return "I am a Cow " + base.ToString();
}
}
使用
override
关键字:
abstract class Animal
{
protected int numberOfPaws;
public abstract String speak();
public override string ToString(){
return "I have " + numberOfPaws + " paws";
}
}
class Cow : Animal
{
public Cow : base(4) {}
public override String speak(){
return "Moo!";
}
public override string ToString(){
return "I am a Cow " + base.ToString();
}
}
你应该在这里读到:
您错过了覆盖
关键字您应该在这里阅读:
您错过了
覆盖
关键字首先,因为您正在使用接口,您应该将cow初始化更改为cow c=new Animal()@MajkeloDev否,它应该是Animal c=new Cow()
。记住,所有C#对象(包括类)都有ToString
方法,请使用它并享受。首先,由于您使用的是界面,您应该将cow初始化更改为cow C=new Animal()@MajkeloDev否,它应该是Animal c=new Cow()
。记住,所有C#对象(包括类)都有ToString
方法,使用它并享受它。如果我在Animal
中执行public override String ToString()
,它会给出一个错误,说明它找不到合适的方法来重写ToString
,而不是ToString
如果执行public override String ToString to String
()在Animal
中,它给出了一个错误,指出它找不到合适的方法来覆盖ToString
,而不是ToString