サブクラス

更新日:

用語解説

サブクラスは、既存のスーパークラスとの「is-a」関係を表し、その公開契約を継承しながら、属性・操作の追加又は許された再定義を行う下位クラスです。

■ 試験で押さえるポイント

  • 継承したメソッドをオーバーライドして多相的に振る舞えますが、基底型が約束する事前・事後条件や不変条件を壊してはいけません。

  • サブクラスのインスタンスをスーパークラス型として扱えることがリスコフの置換原則で、利用側の期待を維持します。

  • コードを再利用したいだけで意味上のis-a関係がない場合は、継承より委譲・合成が適します。

  • サブクラスを定義する方向は特化、複数クラスの共通点を上位クラスへまとめる方向は汎化です。

■ 選択肢での判断ポイント

上位型の契約を満たす下位型であり、置換可能性が必要です。単に内部で別クラスを利用するhas-a関係とは異なります。

例: Shapeのarea契約をCircleが実装し、Shapeを受け取る処理へCircleを渡せるならサブクラスです。面積計算で例外条件を勝手に強めません。

音声で聞く

同じ分野の用語