最近色々と実装を行っていた際に、継承でもともとの実装を変えずに追加実装を書こうと思った際にどうしたらよいか少し迷ったので忘れないように自分の覚え書きを書いておきます。
class BaseClass
{
protected virtual void Initialize()
{
// 色々実装が入っている
}
}
class DerivedClass : BaseClass
{
protected override void Initialize()
{
base.Initialize();
// 追加実装を書く
hoge();
}
void hoge()
{
// 処理内容を書く
}
}
色々理由があり元の実装は変更したくない、しかし追加実装を書きたいということがありこのようになりました。
追加がしたいため継承で新たにクラスを作成しました。
そのため、追加実装を書きたい関数をvirtualに変更しoverrideを行えるように変更し、関数自体をoverrideします。
そして、その中に追加実装を書きoverrideした関数の方でbaseで元の実装を呼びだすことで対応します。
@shiracamus さんから指摘をいただき、追加実装は後ろにずらしました。
追加実装の修正により、baseの実装が上書きされてしまうのを防ぐためです。
これでシンプルに追加実装を書くことができます。
最後に
この方法がわからずに少し時間を無駄にしてしまいました。
やはり、オブジェクト指向回りの理解がまだ不十分だと改めて思いました。
また思いつきで記事を書いていきたいと思います。