1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

継承先で追加動作を書きたいとき

Last updated at Posted at 2022-01-29

最近色々と実装を行っていた際に、継承でもともとの実装を変えずに追加実装を書こうと思った際にどうしたらよいか少し迷ったので忘れないように自分の覚え書きを書いておきます。

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の実装が上書きされてしまうのを防ぐためです。

これでシンプルに追加実装を書くことができます。

最後に

この方法がわからずに少し時間を無駄にしてしまいました。
やはり、オブジェクト指向回りの理解がまだ不十分だと改めて思いました。
また思いつきで記事を書いていきたいと思います。

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?