Code Fix

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

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

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

 1  class Instrument {
 2      public virtual void Play() { System.Console.WriteLine("..."); }
 3      public virtual void Tune() { System.Console.WriteLine("..."); }
 4  }
 5  class Guitar : Instrument {
 6      public sealed override void Play() { System.Console.WriteLine("Strum"); }
 7      public override void Tune() { System.Console.WriteLine("Tune up"); }
 8  }
 9  class BassGuitar : Guitar {
10      public override void ____() { System.Console.WriteLine("Thump"); }
                               ^
11  }
12  class Program {
13      static void Main(string[] args) {
14          BassGuitar b = new BassGuitar();
15          b.Play();
16          b.Tune();
17      }
18  }
Program.cs(10,26): error CS0239: 'BassGuitar.Play()': cannot override inherited member 'Guitar.Play()' because it is sealed

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

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

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

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

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