多重継承 |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
多重継承
複数の親クラスを一つの子クラスが継承する形態。
そして、その関係を特化と言う。
多重継承の利点の一つは、
多機能な子クラスを迅速に作りやすい。
既にある親クラスの機能を集中できる。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
多重継承の問題例:ダイヤモンド継承(菱形継承)
もし複数の親クラスが同じクラスを継承していたら
子クラスは、どの親クラスのメソッドを継承するのか? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
答え:「このままじゃ継承できない」。あいまいな部分を解決しないといけない。
そして、あいまいな部分の解決方法は開発言語によって異なる。
オブジェクト指向は考え方。それをどう実装するかは開発言語によって違う。
例えば、C++の場合は、「仮想継承」と言う仕組みを使って対応したりする。
そして、Javaの場合はそもそも多重継承自体が許可されない。
つまり、多重継承ができない。
Javaの場合、多重継承はメリットよりデメリットの方が多いと考えて切り捨てた。
(無くてもプログラムを作る上で問題なく、やろうと思えば似たようこともできる。) |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|