
1
章 デザインパターン入門
you are here
5
継承について考えるジョー
quack() { //
キューキュー
}
display() { //
ゴムのアヒル
}
fly() {
//
オーバーライドして
//
何もしないようにする
}
RubberDuck
quack() {
//
オーバーライドして
//
何もしないようにする
}
display() {
//
おとりのカモ
}
fly() {
//
オーバーライドして
//
何もしないようにする
}
DecoyDuck
これはクラス階層内の別のク
ラスです。
RubberDuck
と
同様、カモのように飛ばない
し鳴き声をあげることもあり
ません。
そうするとプログラムに木製の
おとりのカモを追加するときに
はどうなるかな?
木製のおとり
のカモは飛んだり鳴いたりしな
いはずだな。
Duck
の振る舞いを用意するために継承を使うデメリットは、次のうちのどれでしょうか?(当てはまるものすべてを選択し
てください)
□
A.
コードがサブクラス間で重複する。
□
B.
実行時の振る舞いを変更するのが困難である。
□
C.
カモを踊らせることができない。
□
D.
すべてのカモの振る舞いを把握することが困難で
ある。
□
E.
カモが飛ぶことと鳴き声をあげることを同時に行
えない。
□
F.
変更によって無意識に他のカモに影響を与える可
能性がある。
quack()
メソッドの場合と同様
に、ゴムのアヒルで常に
fly()
メ
ソッドをオーバーライドするこ
ともできるな。