c# - 抽象类必须覆盖抽象方法?

标签 c#

假设这个抽象类:

abstract public class MyBase {

    abstract public int GetValue();

    <some concrete methods here>
}

现在我想继承它作为另一个抽象类,实现 GetValue() 但添加新的抽象方法:

abstract public class MyBase2 : MyBase {

    abstract public int GetValue2();

    public override int GetValue() {
        // some code here
        return something;
    }

}

为什么我必须为 MyBase2.GetValue() 指定 overrideMyBase.GetValue() 是否已经被标记为 abstract,因此自然会被继承自 MyBase 的任何内容覆盖?

最佳答案

Why do I have to specify override for MyBase2.GetValue()?

C++ 也采用了这种范式。

想法是:通过明确地需要为 virtualabstract 使用关键字 override,您将确保您进行覆盖时不要打错字。因为如果您看不到这样的错字,行为,尤其是在 virtual 上的行为将会发生显着变化。

话虽如此;我仍然觉得奇怪的是,用于添加方法的 new 关键字仍然是可选的,并且仅在省略时发出警告。

关于c# - 抽象类必须覆盖抽象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57127217/

相关文章:

c# - 在共享的 WinRT 8.1 页面上显示广告

c# - 使用 Microsoft Office 12.0 对象库保存 .xls 文件

c# - 动态改变着色器的属性

c# - 仅仅为了提供默认状态/配置而进行子类化是否可以?

c# - Dropzone.js:将图像上传到 ASP.NET 中的服务器

c# - 聚合值直到达到限制

c# - 自定义绑定(bind) : The provided URI scheme 'https' is invalid; expected 'http' . 参数名称:via

c# - 如何为字符串生成唯一的哈希码

c# - Web API 中的 DefaultControllerFactory 等价物是什么?

c# - 编辑模式下的 DataGrid 单元格不接受 .(点)作为 WPF MVVM 中的十进制值