Code Fix

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

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

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

 1  class Vehicle {
 2      public virtual void Accelerate() { System.Console.WriteLine("..."); }
 3      public virtual void Brake() { System.Console.WriteLine("..."); }
 4  }
 5  class Car : Vehicle {
 6      public sealed override void Accelerate() { System.Console.WriteLine("Vroom"); }
 7      public override void Brake() { System.Console.WriteLine("Stop"); }
 8  }
 9  class SportsCar : Car {
10      public override void __________() { System.Console.WriteLine("Fast"); }
                                  ^
11  }
12  class Program {
13      static void Main(string[] args) {
14          SportsCar s = new SportsCar();
15          s.Accelerate();
16          s.Brake();
17      }
18  }
Program.cs(10,26): error CS0239: 'SportsCar.Accelerate()': cannot override inherited member 'Car.Accelerate()' because it is sealed

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

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

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

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

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