アブストラクトクラスとクラスの違いについて
プログラミングを学んでいく上で、クラスとアブストラクトクラスは、オブジェクト指向言語の重要な概念です。これら二つの違いを理解することで、コードの設計がより柔軟かつ効果的になります。この記事では、アブストラクトクラスと通常のクラスについて解説します。
そもそもアブストラクトクラスって何?
アブストラクトクラスは、オブジェクト指向プログラミングにおける特別な種類のクラスです。通常のクラスと異なり、アブストラクトクラス自体はインスタンス化することができません。代わりに、他のクラスがこれを継承して使用します。アブストラクトクラスは、一般的な振る舞いを定義する「契約」のようなものと考えることができます。
アブストラクトクラスは、具体的な実装を持たないメソッドを持つことができます。これらのメソッドはアブストラクトメソッドと呼ばれ、サブクラスがこれらのメソッドに具体的な実装を提供する必要があります。
クラスとは?
通常のクラスは、オブジェクトの設計図として使用されます。クラスは属性(変数)とメソッド(関数)を持つことができます。これにより、オブジェクトを作成し、それに関連するデータと振る舞いをカプセル化することができます。
具体的な実装を持たないのはどういう意味?
下記の学校の図でわかりやすく説明していきます。
学校という大きな括りがあり、その中でどの学校にも入学と卒業があると思います。
ですが、学校祭や行事といったものは学校ごとで異なるため、アブストラクトクラスでは定義しないのが特徴です。
typescriptのように型を定義するイメージをしていただけるとわかりやすいかと思います。
クラスとアブストラクトクラスの違い
- クラスは具体的なものを実装しておく
- アブストラクトクラスは具体的な実装を持たない
なかなかアブストラクトクラスで定義しておくことは少ないとは思いますが、自分が新卒研修で気になった点をまとめたので参考にしてみてください。
まとめ
- アブストラクトクラスは、インスタンス化することはできませんが、他のクラスに継承される基盤として使われます。
- アブストラクトクラスは、一つ以上の抽象メソッドを持つことができます。これらのメソッドは具体的な実装を持たず、サブクラスでオーバーライドする必要があります。
- 通常のクラスは、オブジェクトの具体的な実装を提供します。これには属性とメソッドが含まれます。
アブストラクトクラスと通常のクラスを適切に使用することで、コードの再利用性と拡張性が向上します。これにより、より効率的なプログラム開発が可能になります。