Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在派生类中重写toSting_C#_Overriding_Abstract Class_Tostring - Fatal编程技术网

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