C#では、継承されたクラスを強制的に実装するために仮想メソッド抽象をマークすることができます。抽象的なオーバーライドとして宣言された基本メソッドを呼び出す方法
class A
{
public virtual void Method()
{
Console.WriteLine("A method call");
}
}
abstract class B : A
{
// Class inherited from B are forced to implement Method.
public abstract override void Method();
}
私はB
から継承されたクラスからMethod
のA
実装を呼び出すしたいと思います。
class C : B
{
public override void Method()
{
// I would like to call A implementation of Method like this:
// base.base.Method();
}
}
これを行う最良の方法は、A実装の保護メソッド "MethodCore"を追加し、必要に応じて呼び出すことです。
class A
{
public virtual void Method()
{
MethodCore();
}
protected void MethodCore()
{
Console.WriteLine("A method call");
}
}
abstract class B : A
{
public abstract override void Method();
}
class C : B
{
public override void Method()
{
MethodCore();
}
}
これを行う方法は他にありますか?
もちろん、特定の実装が必要な場合は、それを提供するだけです。しかし、私は "実装を提供する必要があります"というメリットを失ってしまいます... – Orace
@Orace残念ながら、親クラスのメソッドはオプションではなく、同時に実装する必要はありません。 – CKing