「DisplayTitle」というメソッドを実装する「Parent」という抽象親クラスがあります。このメソッドを "Parent"を継承する各サブクラスで同じにしたい - サブクラスが独自の "DisplayTitle"メソッドを実装しようとすると、コンパイルエラーが発生します。どのようにC#でこれを達成できますか?私はJavaを信じて、メソッドを「final」とマークするだけですが、C#で代替案を見つけることはできません。私は "封印された"と "上書きする"といじり回ってきましたが、私が探している振る舞いを得ることはできません。例えばC#サブクラスがメソッドを上書きしないようにする
、このコードで:
using System;
namespace ConsoleApplication1
{
class Parent
{
public void DisplayTitle() { Console.WriteLine("Parent's Title"); }
}
class ChildSubclass : Parent
{
public void DisplayTitle() { Console.WriteLine("Child's Own Implementation of Title");
}
static void Main(string[] args)
{
ChildSubclass myChild = new ChildSubclass();
myChild.DisplayTitle();
Console.ReadLine();
}
}
}
私は「ChildSubClassは」「DISPLAYTITLE」を上書きすることはできませんというコンパイルエラーを受け取りたいです。私は現在警告を受けていますが、これは私ができるはずのものであり、メソッドにラベルを付けるための適切な属性がわからないようです。
私の本当の懸念は、誤った誤用であると思います。私は "TurnOn"と "TurnOff"メソッドを持つ別のプロジェクトに抽象クラスを持っています。詳細にあまり浸透することなく、このクラスは実世界のオブジェクトを表すために複数回サブクラス化されます。ただし、これらのデバイスはすべて同じ方法でオン/オフされます。私は自分自身や他の人が、ある種の警告なしで個々のデバイスのコマンドをオフ/オンにするようなことはしたくない。 – user1720817
@ user1720817:まあ、警告になるだろう。あなたのサンプルコードからの警告を私の答えに編集します... –
うん、警告があります:それはコンパイル時のエラーになりたいと思う私のOCDです。これを書く時間をとってくれてありがとう! – user1720817