Code Fix

上級 › sealedメンバーをオーバーライドしようとした原因と直し方 › パターン5

sealedメンバーをオーバーライドしようとした原因と直し方

sealed overrideを付けたメンバーを、さらに下の派生クラスでオーバーライドしようとすると出るコンパイルエラーです。

 1  class Employee {
 2      public virtual void Work() { System.Console.WriteLine("..."); }
 3      public virtual void Rest() { System.Console.WriteLine("..."); }
 4  }
 5  class Manager : Employee {
 6      public sealed override void Work() { System.Console.WriteLine("Manage"); }
 7      public override void Rest() { System.Console.WriteLine("Break"); }
 8  }
 9  class SeniorManager : Manager {
10      public override void ____() { System.Console.WriteLine("Vacation"); }
                               ^
11  }
12  class Program {
13      static void Main(string[] args) {
14          SeniorManager s = new SeniorManager();
15          s.Work();
16          s.Rest();
17      }
18  }
Program.cs(10,26): error CS0239: 'SeniorManager.Work()': cannot override inherited member 'Manager.Work()' because it is sealed

空欄を埋めてビルドを通す

広告
広告スロット(未設定)

sealedメンバーをオーバーライドしようとした原因と直し方

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)