Code Fix

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

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

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

 1  class Animal {
 2      public virtual void Speak() { System.Console.WriteLine("..."); }
 3      public virtual void Move() { System.Console.WriteLine("..."); }
 4  }
 5  class Dog : Animal {
 6      public sealed override void Speak() { System.Console.WriteLine("Woof"); }
 7      public override void Move() { System.Console.WriteLine("Run"); }
 8  }
 9  class Puppy : Dog {
10      public override void _____() { System.Console.WriteLine("Yip"); }
                               ^
11  }
12  class Program {
13      static void Main(string[] args) {
14          Puppy p = new Puppy();
15          p.Speak();
16          p.Move();
17      }
18  }
Program.cs(10,26): error CS0239: 'Puppy.Speak()': cannot override inherited member 'Dog.Speak()' because it is sealed

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

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

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

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

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