繁体   English   中英

dotnetacademy 练习 7.1 - 具有覆盖的继承和抽象类?

[英]dotnetacademy Exercise 7.1 - Inheritence and Abstract Classes with Override?

我正在学习本网站上的 C# 教程,但我一直在做这个练习。 我被困在 5.1 上,和我一起工作的一个 C# 程序员发现这个问题是一个可怕的空间。 很难看出我的概念是否正确。 他说空间问题永远不会导致实际编译出现问题,因此它可能是网站验证器中的错误。

无论如何,我在这里练习 7.1: dotnetacademy 练习 7.1 ,我似乎无法让代码正确验证。 步骤如下:

  1. 创建一个名为 Astrodroid 的抽象类,该类提供一个名为 GetSound 的虚拟方法,该方法返回一个字符串。 默认声音应该是“哔哔”字样。
  2. 实现一个名为“MakeSound”的方法,该方法将 GetSound 方法的结果写入控制台,后跟一个新行。
  3. 创建一个从 Astrodroid 继承的名为 R2 的派生类。
  4. 覆盖 R2 类的 GetSound 方法,使其返回“Beep bop”。

这是我写的代码:

using System;

// Implement your classes here.
public abstract class Astrodroid
{
    public virtual string GetSound { get { return "Beep beep"; } }
    
    public void MakeSound() 
    { 
        Console.WriteLine(GetSound); 
    }
    
}

public class R2 : Astrodroid
{
    public override string GetSound { get { return "Beep bob"; } }
}

public class Program
{
    public static void Main()
    {   
        //var MakeSound = new R2();
        //Console.WriteLine(MakeSound.GetSound);
    }
}

我得到的错误是这样的:

并非所有要求都已满足。

您必须定义一个名为 GetSound 的方法,该方法返回一个字符串。

谁能帮我弄清楚我做错了什么?

您将GetSound定义为属性,而不是方法。

public override string GetSound() { return "Beep bob"; } public override string GetSound() { return "Beep bob"; }就是您想要的。

使用它来使您的测试工作:

var MakeSound = new R2();
Console.WriteLine(MakeSound.GetSound());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM