【发布时间】:2019-07-23 10:27:58
【问题描述】:
学了一个学期的Java,目前正在自学C#。
java(或一般的面向对象编程)的特性之一是能够覆盖继承到子类中的方法。
当我在 C# 中研究此功能时,我试图自己覆盖一个方法,而没有研究在 C# 中覆盖方法的正确方法,它似乎有效。
但是,经过进一步研究,我了解到我们需要在超类中声明方法时使用关键字virtual,而在子类中覆盖方法时需要使用override。
所以我的问题是:
在 C# 中覆盖方法的正确方法是什么?
附加说明:我还想知道同样的情况是否适用于 C# 中的重载方法。
【问题讨论】:
-
virtual关键字的意思是“这是一个可以被覆盖的默认实现”。abstract关键字的意思是“必须始终覆盖它”。出于显而易见的原因,如果类也不是abstract,则不能使用abstract。正确的方法取决于你需要什么。 -
我在 Stackoverflow 上找不到直接的问题,我正要回答。
-
@CodeNameJack 那里有are some,他们都没有投票。猜猜大多数问题都会让 cmets 链接到 Microsoft 语言参考。
-
我建议检查 virual keyword reference 并查看其限制,这将为您提供关于如何/何时覆盖的良好基础。
-
我会建议override modifier C# Reference - 关于如何覆盖的所有内容都在那里说明
标签: c# .net .net-core methods overriding