多重継承
親要素の特徴を受け継ぐよ
親要素が複数あるよ
オブジェクト指向の話とかで出てくるよ
簡単に書くよ
多重継承(読:タジュウケイショウ 英:multi inheritance)とは
複数の親要素から継承する(親要素の特徴を受け継ぐ)こと。
もう少し具体的に書くと
複数の元ネタから要素を受け継いで、元ネタの特徴を備えた新しいのを作ること
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「オブジェクト指向」と「継承」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
オブジェクト指向は「『モノ』に注目した考え方」です。
「どんなやつで、どう動く」に注目した考え方です。
詳細は、用語「オブジェクト指向」の説明を ご覧ください。
継承は「元ネタから要素を受け継いで、元ネタの特徴を備えた新しいのを作ること」です。
例えば、そうですね。
ここにピヨ太ママがいたとしましょう。
ピヨ太ママの要素を受け継いだピヨ太君を新しく作りました。
ピヨ太君にはピヨ太ママの特徴が色濃く受け継がれています。
これが継承です。
継承元(ピヨ太ママ)から要素を受け継いで、継承元の特徴を備えた新しいの(ピヨ太君)を作る行為です。
なお、このときのピヨ太ママとピヨ太君は「親子関係にある」と言います。
ピヨ太ママはピヨ太君の「親」です。
ピヨ太君はピヨ太ママの「子」になります。
以上を踏まえて
「複数の」親から要素を受け継いで新しいやつを作る継承
が「多重継承」です。
先ほどの継承の説明ではピヨ太ママの要素を受け継いだピヨ太君を作りました。
親はピヨ太ママ1人です。
多重継承では親が複数人登場します。
例えば、ピヨ太ママとピヨ太パパの要素を受け継いだピヨ太君を作るのが多重継承です。
親はピヨ太ママとピヨ太パパの2人になります。
注意点として、多重継承は、いろんな人から「できるだけ使わないでほしいな~」と思われているテクニックです。
理由は、いろいろありますけどね。
一言で言えば
複雑になるから
です。
複雑になる例はいろいろありますが、ひとつだけ挙げておきましょう。
先ほどの例でピヨ太ママとピヨ太パパの要素を受け継いだピヨ太君を作りました。
親はピヨ太ママとピヨ太パパの2人です。
それではピヨ太ママとピヨ太パパが両方ともピヨ太ジージの要素を受け継いでいたら、どうでしょう。
ピヨ太ママにはピヨ太ジージの要素が受け継がれています。
ピヨ太パパにもピヨ太ジージの要素が受け継がれています。
普通に考えれば、ピヨ太君にもピヨ太ジージの要素は受け継がれるはずです。
さて、ここで考えてみてください。
ピヨ太君に受け継がれるピヨ太ジージの要素はピヨ太ママの中にあったピヨ太ジージの要素でしょうか?
それとも、ピヨ太パパの中にあったピヨ太ジージの要素でしょうか?
ピヨ太君はピヨ太ジージと直接の関係は ありません。
受け継いでいるのは、あくまで(ピヨ太ジージの要素を受け継いだ)ピヨ太ママとピヨ太パパの要素です。
ピヨ太君に受け継がれるピヨ太ジージの要素はピヨ太ママ譲りかピヨ太パパ譲りのはずですが……どっちでしょうか?
「う~ん、どっちだろ?」と悩みませんか?
他に判断材料がなければ「ピヨ太ママ譲りのピヨ太ジージの要素だよ!」のように補足してもらう必要があります。
これが多重継承のややこしさの一例です。
多重継承には考慮しなくてはいけない点が、いろいろあるのです。
そんなこんなで多重継承は面倒くさい子扱いされることが少なくありません。
プログラミング言語によっては「考慮するのが面倒くさいから多重継承はなしね!」と最初から排除しているものもあります。
例えば、かの有名なJavaでは多重継承は使えません。
Javaを作った人は、きっと「ややこしいんだよ、ばーか!」と考えたのでしょう。
一言でまとめるよ
まぁ「多重継承」って単語が出てきたら「複数の元ネタから要素を受け継ぐんだな~」と お考えください。






