c# - Override Sealed 是有效的,但为什么在 C# 中不使用 Virtual Sealed?

标签 c# .net oop

下面的代码片段是有效的

public class BaseClass
{

   public virtual void Display()
   {
      Console.WriteLine("Virtual method");
   }
 }

public class DerivedClass : BaseClass
{

  public override sealed void Display()
  {
       Console.WriteLine("Sealed method");
  }

但为什么不

public class BaseClass
{

 public virtual sealed void Display()
 {
          Console.WriteLine("Virtual method");
 }
}

已编辑

其实我在读What is sealed class and sealed method?本文。所以我是按照作者的指示去做的。突然我尝试用基类玩 Sealed 的概念。这就是我提出这个问题的原因。

最佳答案

override sealed 是有效的,因为它表示“我正在覆盖基类方法,但派生类不能覆盖我。”这就说得通了。其中一部分是在谈论与其基类的关系;另一个在讲派生类的关系。

virtual sealed 会说“你可以覆盖我(virtual)但你不能覆盖我(sealed)。”这是没有意义的。这两个修饰符是矛盾的并且适用于相同的关系。

关于c# - Override Sealed 是有效的,但为什么在 C# 中不使用 Virtual Sealed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28315166/

相关文章:

c# - C# 中的保序数据结构

c# - 如何在 ASP.NET 服务器端使用剪贴板

c# - 检测使用/滥用 String.Concat 的工具(应该使用 StringBuilder 的地方)

java - Object类怎么可能是子类的父类(super class)呢?

c# - 如何在没有数据库的情况下生成仅用于显示用户在 c# 表单应用程序中填写的表单数据的 Crystal 报表

c# - 如何在 Windows Phone 8 上创建此哈希

c# - 如何在 Parallel.For 中锁定数组以进行聚合

.net - 如何在Azure移动服务.NET后端使用 "Users"功能

c++ - 在 C++ 中包含父类对象的子类有什么问题(如果有的话)?

javascript - 我什么时候想在 JavaScript 中使用 “class”(静态)方法或属性?