好的,在我学习的过程中,请多多包涵。这是我的问题。
我不知道为什么我不能覆盖父类的方法。这是来自基类的代码(是的,我从一本 OOP 书籍中窃取了 java 代码,并试图用 C# 重写它)。
using System;
public class MoodyObject
{
protected String getMood()
{
return "moody";
}
public void queryMood()
{
Console.WriteLine("I feel " + getMood() + " today!");
}
}
这是我的其他 2 个继承基类 (MoodyObject) 的对象:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class SadObject: MoodyObject
{
protected String getMood()
{
return "sad";
}
//specialization
public void cry()
{
Console.WriteLine("wah...boohoo");
}
}
}
和:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class HappyObject: MoodyObject
{
protected String getMood()
{
return "happy";
}
public void laugh()
{
Console.WriteLine("hehehehehehe.");
}
}
}
这是我的主要内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MoodyObject moodyObject = new MoodyObject();
SadObject sadObject = new SadObject();
HappyObject happyObject = new HappyObject();
Console.WriteLine("How does the moody object feel today?");
moodyObject.queryMood();
Console.WriteLine("");
Console.WriteLine("How does the sad object feel today?");
sadObject.queryMood();
sadObject.cry();
Console.WriteLine("");
Console.WriteLine("How does the happy object feel today?");
happyObject.queryMood();
happyObject.laugh();
}
}
}
正如你所看到的,非常基本的东西,但这里是输出:
喜怒无常的对象今天感觉如何?我今天心情不好!
悲伤的对象今天感觉如何?我今天心情不好!哇...嘘
快乐的对象今天感觉如何?我今天心情不好!嘿嘿嘿嘿嘿。按任意键继续 。. .
不像我预期的那样。我试图将基本方法设为虚拟并在尝试覆盖它时调用覆盖,这只会让我出现这个错误“无法覆盖继承的成员'MoodyObject.getMood()',因为它没有被标记为虚拟、抽象或覆盖”。我也尝试过没有虚拟和覆盖,它认为我试图隐藏基本方法。同样,我是 OOP 的新手,希望得到任何指导。
编辑添加:我找到了!MoodyObject.cs 只是解决方案资源管理器中的“解决方案项”,而不是“ConsoleApplication1”项。我将它拖到解决方案资源管理器中它所属的位置,瞧!现在可以了。我在下面将 Luc 的答案标记为答案,因为他为我提供了解决问题所需的帮助......我在这里学到了很多东西。太棒了,你们这些男孩女孩都非常聪明!