IT資格用語解説基本情報技術者試験・ソフトウェア設計手法
サブクラス
更新日:
用語解説
サブクラスは、既存のスーパークラスとの「is-a」関係を表し、その公開契約を継承しながら、属性・操作の追加又は許された再定義を行う下位クラスです。
■ 試験で押さえるポイント
継承したメソッドをオーバーライドして多相的に振る舞えますが、基底型が約束する事前・事後条件や不変条件を壊してはいけません。
サブクラスのインスタンスをスーパークラス型として扱えることがリスコフの置換原則で、利用側の期待を維持します。
コードを再利用したいだけで意味上のis-a関係がない場合は、継承より委譲・合成が適します。
サブクラスを定義する方向は特化、複数クラスの共通点を上位クラスへまとめる方向は汎化です。
■ 選択肢での判断ポイント
上位型の契約を満たす下位型であり、置換可能性が必要です。単に内部で別クラスを利用するhas-a関係とは異なります。
例: Shapeのarea契約をCircleが実装し、Shapeを受け取る処理へCircleを渡せるならサブクラスです。面積計算で例外条件を勝手に強めません。