多重継承

multiple-inheritance.png

つのクラスが複数のクラスを同時に継承するということ
C++では許されてるけど、基本的にオブジェクト指向言語では許されない[2]
たとえば、Objective-Cでは多重継承は許されない。
Scotさんの本でもおすすめしてなかった気がする[3]
現実世界では多重継承はありうる。
ある女性は
ときには、母親、ときには妻、ときには会社員、といった具合に。一つのオブジェクトが複数のクラスに帰属できることを多重分類と呼ぶ。
また、現実世界の人間は時間とともに分類が変化する
私も、昔は、小さい子、お譲ちゃん、今はお姉さん、大人の女性というように。このようにあるクラスが別のクラスに鞍替えできることを動的分類と呼ぶ。[2]
複数のインタフェースもつときは、えーっと、、、

多重継承が危険な理由

あいまいな定義

たとえば、2つの親から継承して、その2つの親がまったく同じ名前の関数を持っていたら??
子供はどっちの親の関数を呼んでいるの?となる。

サブクラスによって再定義?

サブクラスによって再定義する場合、いったいどっちの親の関数を再定義してるのかわからなくなる

サポートサイト Wikidot.com