2012-01-12 7 views
5

私はS4は多重継承をサポートしていますが、それは方法の検索が非常に複雑になり、これは細心の注意を払って を使用する必要があることをhttps://github.com/hadley/devtools/wiki/S4複数の継承を使用することをお勧めしないのはなぜですか?

ノートに読んR.

でS4クラスを作成しています。

メソッドルックアップとは何ですか、なぜ多重継承でより複雑になるのですか?

+0

多くのS4リソースを認識していることを確認してください:http://stackoverflow.com/questions/4143611/sources-on-s4-objects-methods-and-programming-in-r –

答えて

10

あなたはxは、いくつかのクラス(たとえば、A、BおよびC)に所属し、f(x)を入力すると、コンピュータは(クラスA、B、またはCからのこと)を呼び出すためにどのf方法を決定するためにあります。これは呼ばれています"メソッド検索"。

複数の継承は、コードが進化するときに問題を引き起こすことがよくあります。

2つの基本クラスAとBを作成し、クラスCが両方から継承しているとします。すべてうまく動作します。 数ヶ月後、クラスAを使用し、クラスBとクラスCを完全に知らない(彼はそれらを必要としない)開発者は、クラスAに新しいメソッドを追加します。クラスBの同じ名前です。クラスCのオブジェクトはどうなりますか? AまたはBのメソッドを使用しますか?いくつかの言語では、コードが失敗する可能性があります。他の言語では、未定義の動作や非常に難しいバグを持つことがあります。

+3

私はあなたの説明を考えていますs4メソッドについて少し混乱しています。それらはクラスではなく関数に属します。 – hadley

関連する問題