![]() |
[1999 年 2 月号] |
[Happy Squeaking!!]
3.継承(2)
3.1 抽象クラス
分類概念の上下関係にもとづいてクラスの継承をきちんと作成していくと、「実際にはインスタンスを作成する必要のないクラス」が存在することになります。
例えば、ペットブリーダーを支援するアプリケーションを作成していたと考えてみましょう。様々な動物をプログラム上管理する必要があるため、
哺乳類 犬 柴犬 チワワ コリー 猫 …
といった形でクラスを定義していたとします。
実際に、ペットブリーダーが育てるのは、「(芝犬の)ポチ」や「(コリーの)ラッシー」です。この場合に、「哺乳類」「犬」「猫」といったクラスは、主として分類の適切な階層を形成するために存在し、実際のインスタンスは作成しないことになります。(なんだかよくわからない「哺乳類のインスタンス」をペットブリーダーが対象にすることはありえません)。
こうしたクラスを抽象クラスと呼びます。抽象クラスの「抽象」とは、決して「具体的なインスタンスが作成されない」という意味になります。(これに対し、実際にインスタンスが作成されるクラスを「具象クラス」とよぶ場合があります)。
ただし、抽象クラスの持つ「属性の定義」、「操作の定義」、「操作の実装」は依然としてサブクラスで継承され、利用されることになります。
例えば「哺乳類」には、「平均体温」といった属性の定義を行っておくことができ、「犬」には「お手」「おすわり」といった操作の定義、実装をすることができます。
抽象クラスは分類の概念をきちんと整理するのに役立ち、また、継承によるコードの再利用も促進します。
© 1999-2001 OGIS-RI Co., Ltd. |
|