平成24年度 春期 午前 問45
開発技術
抽象クラスに関する問題
オブジェクト指向における抽象クラスで,できないことはどれか。
- アインスタンスを生成すること
- イサブクラスをもつこと
- ウスーパクラスをもつこと
- エ属性をもつこと
答えと解説を見る
✓ これが正解アインスタンスを生成すること
解説
中身の決まらない操作が残るため実体を作れません。
この設問は、抽象クラスにできないことを一つだけ選ばせる、否定形の問いです。見分けの軸は、その振る舞いを認めるとクラスが枠として成り立たなくなるか、という一点になります。抽象クラスとは、中身の決まっていない操作を残したまま置かれるクラスです。共通の枠だけを先に決めておき、具体的な動きはサブクラスの側に書かせるための仕組みですので、そのままでは動けない部分を抱えています。ここから実体を作ってしまうと、中身の無い操作が呼ばれたときに何もできません。ですから、実体を作ること、つまりインスタンスの生成だけが認められません。逆に言えば、それ以外は通常のクラスと変わりません。図形という枠に面積を求める操作だけを決めておき、円や四角形がそれぞれの式で実装すれば、使う側はどれも同じ呼び方で扱えます。そして図形そのものは現実には存在しませんから、実体を作れないほうが、模型としてかえって正しいことになります。この設問は、できることを三つ探す問いではありません。できないものを一つ選ぶ、という向きを取り違えないでください。
ほかの選択肢はなぜ違うのか
- イサブクラスをもつこと:これは認められます。枠を受け継いで中身を書き足す側を用意することこそが、この仕組みの目的だからです。受け継いだ側が残された操作を実装して、初めて動く形になります。
- ウスーパクラスをもつこと:これも認められます。上位に別のクラスを置き、その性質を受け継ぐ位置に立つことができますので、継承のつながりの途中に置いても差し支えありません。
- エ属性をもつこと:これも認められます。中身が決まっていないのは操作の側であって、データを保持する仕掛けを持つことまで制限されているわけではありません。共通して使う値を枠の側に置けます。
出典:平成24年度 春期 応用情報技術者試験 午前 問45
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)