C#

【C#】継承とは?どんな時に使えばいいのかを解説する【オブジェクト指向】

オブジェクト指向プログラミングで初心者エンジニアが悩まされる「継承」についてまとめます。
そもそも「継承」とは何か?「継承」どんな時に使えばいいのかを説明していきます。

継承とは?

継承とは、AクラスとBクラスがあったとして、AクラスがBクラスを継承するとBクラスの機能が全て使えるようになります。
Bクラスのように元になるクラスのことを「スーパークラス(別名:基底クラス[ベースクラス])」と呼び、Aクラスはサブクラス、子クラスと呼びます。

「親クラスの機能が全部使える!」と聞くとなんだか「パワフルな感じ」がしますね。
そして、エリ狐もそうでしたが、覚えた手の頃は無駄に使いたがります…。

オレ…オブジェクトシコウ、リカイシテルゼ!ってアピールしたくなるのー

しかし…
「使いすぎ注意」です!

極力使わないことをオススメします。
なぜ、使わない方が良いかというと「可読性がかなり落ちる」のです。

なぜなら、サブクラスのコードを読む際には、その親であるスーパークラスの機能を理解した上で読まなければならないからです。
もちろん、スーパークラスの機能をフルで使うのであれば継承は必要です。(むしろ継承してください。

しかし、その一部のみ使用となってしまうと、かなり時間の無駄になってしまいます。
したがって。使い過ぎには注意です。

したがって、継承を完璧に理解していないうちは「インタフェース」を使用するのをオススメします。
もしも「継承」を使用する場合には、1段回までとしましょう。

継承の継承の継承となってしまうと、コードの理解に時間がかかったり、バグに繋がります。
では、ぶっちゃけ「継承」は使わない方がいい…いらない機能なのではないか?と思ってしまいますよね?

しかし、むしろ継承を使うべきなものがあります。

どんな時に使うのか?

継承を使うタイミングは次の3つです。

  • 抽象クラス
  • コントローラーの拡張
  • ベース画面の継承

抽象クラスとはほぼインタフェースと同じです。イメージとしてはロジックのかけるインタフェースといった感じでしょうか。
したがって、基本的にはインタフェースの使用をすべきですが、「ロジックを共通化したい!」という場合には抽象クラスを作成すると良いでしょう。

コントローラーの拡張は、エラーの際に文字を赤くしたり、文字を*に変更したいなど、機能を使いまわしたい!という時は、ベースクラスに共通ロジックを作成して拡張すると良いでしょう。

ベース画面の継承は、ExcelやWordは次のページを開いても同じような画面が続きます。
アプリケーションの画面も同様に、同じような画面でそれぞれ機能や動きが変わりますね。

このような場合は、全体の画面を「基底クラス」として作成し、全体を通して同じような動きをさせることが重要になります。
また、同じような動きであればユーザビリティもよくなり、ストレスレスなアプリケーション開発となるので、意識してみてください!