1
65
在C#中,默认情况下,方法不是虚拟的,因此如果将某个方法设计为可重写的,则应将其指定为虚拟的:
其次,您必须指定要重写派生类中基类的方法。
如果要停止继承链并禁止进一步重写该方法,则应将该方法标记为密封,如下所示:
|
2
6
您需要使用override关键字来重写任何虚拟方法或实现任何抽象方法。
这里我推荐的是,您可能希望MoodyObject是一个抽象类。(如果你这样做,你必须改变你的主要方法,但你应该探索一下)处于情绪化的状态真的有意义吗?我们上面提到的问题是,HappyObject不需要提供getMood的实现。通过将类抽象化,它可以做以下几件事:
因此,要做到这一点,你必须:
|
3
5
据我所知,在Java中,默认情况下所有方法都是虚拟的。C#不是这种情况,因此需要用“virtual”标记基类方法,例如。
|
4
3
编辑: 我刚刚在一个c#控制台应用程序中尝试了它,它可以编译。因此,您使用的源代码应该与您在此处发布的源代码在一些微小但重要的方面有所不同。
|
5
2
您需要告诉C#您的对象正在重写基类中的函数。 http://msdn.microsoft.com/en-us/library/ebca9ah3(VS.71).aspx
|
6
2
通过使你的方法获得情绪
也许您的错误是因为在Java中,所有的方法都是虚拟的,而C#不是这样(正如Dan C所指出的)。 |
7
1
|
8
0
您需要用“override”关键字标记getMood的覆盖。您还需要使用“virtual”关键字标记基本getMood方法。 |
Brendan · Java中从父类继承的对象的ArrayList 2 年前 |
Tali · 继承-您应该使用基类,还是它们只是子类的框架? 2 年前 |
mask2 · 如何轻松访问继承类的功能? 2 年前 |
Dimon · 父类中的Setter,以及一些没有参数的子类 2 年前 |
Miguerurso · Javascript类继承无法正常工作 2 年前 |
GuessMe · 返回新类对象的正确方法(也可以扩展) 2 年前 |
Daniel Lizik · 重写父类构造函数的子类成员初始值设定项 2 年前 |
i_know_what · 以基类作为参数重写错误的方法 2 年前 |