この質問にはすでに答えがあります。
抽象クラスAを持ち、部分実装で仮想メソッドを持ち、それをクラスBで継承しています。派生クラスで仮想メソッドを実装したいのですが、派生クラスで基本実装をどのように取得すればよいですか。 例えば。
public abstract class A
{
public int Sum { set; get; }
public virtual void add(int a, int b)
{
Sum = a + b;
}
}
class B : A
{
public override void add(int a, int b)
{
// what should i write here
}
}
仮想メソッドをオーバーライドしても、それが実行されるだけで、デフォルトの(ベース)実装がオーバーライドされ、新しい実装に置き換えられます。ただし、仮想メソッドにオーバーライドされた実装を提供しない場合は、自動的に基本実装が取得されます。だから、あなたの質問に対する答えは単純です上書きしないでくださいadd
そもそも方法:
class B : A {}
ただし、基本実装を保持する必要があるがそれを拡張したい場合は、派生クラスから基本実装を明示的に呼び出すことができます。base
キーワード。例えば:
class B : A
{
public override void add(int a, int b)
{
base.add(a, b);
DoSomethingElse();
}
}
public abstract class A
{
public int Sum { set; get; }
public virtual void add(int a, int b)
{
Sum = a + b;
}
}
class B : A
{
public override void add(int a, int b)
{
//do your sufff
//call base method of class A
base.add(a, b);
}
}
基本クラス関数を呼び出すだけです。
class B : A
{
public override void add(int a, int b)
{
// do operation related to derived class
// call your base function
base.add(a, b);
}
}