菱形継承問題
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/24 03:40 UTC 版)
菱形継承問題(ひしがたけいしょうもんだい、英: diamond problem)は、多重継承を伴うオブジェクト指向プログラミング言語において、クラス A を2つのクラス B と C が継承し、B と C の両方をクラス D が継承する際に発生するあいまいさを指す用語である。たとえば、クラス D にあるメソッドが A で定義された(かつ D においてオーバーライドされていない)メソッドを呼び出すとしたとき、B と C がそのメソッドを異なった形でオーバーライドしていたら、D は B と C のどちらのメソッドを継承するのか、という問題がある[1]。
- ^ 他にもたとえば実装の観点からは、vtblの設計が難しくなるという問題などもある。
- ^ http://www.python.org/doc/newstyle/
- ^ 詳細は http://python-history.blogspot.jp/2010/06/method-resolution-order.html を参照のこと
- ^ http://www.python.org/download/releases/2.3/mro/
- 1 菱形継承問題とは
- 2 菱形継承問題の概要
- 3 関連項目
- 菱形継承問題のページへのリンク