私はS4は多重継承をサポートしていますが、それは方法の検索が非常に複雑になり、これは細心の注意を払って を使用する必要があることをhttps://github.com/hadley/devtools/wiki/S4複数の継承を使用することをお勧めしないのはなぜですか?
ノートに読んR.
でS4クラスを作成しています。
メソッドルックアップとは何ですか、なぜ多重継承でより複雑になるのですか?
私はS4は多重継承をサポートしていますが、それは方法の検索が非常に複雑になり、これは細心の注意を払って を使用する必要があることをhttps://github.com/hadley/devtools/wiki/S4複数の継承を使用することをお勧めしないのはなぜですか?
ノートに読んR.
でS4クラスを作成しています。
メソッドルックアップとは何ですか、なぜ多重継承でより複雑になるのですか?
あなたはx
は、いくつかのクラス(たとえば、A、BおよびC)に所属し、f(x)
を入力すると、コンピュータは(クラスA、B、またはCからのこと)を呼び出すためにどのf
方法を決定するためにあります。これは呼ばれています"メソッド検索"。
複数の継承は、コードが進化するときに問題を引き起こすことがよくあります。
2つの基本クラスAとBを作成し、クラスCが両方から継承しているとします。すべてうまく動作します。 数ヶ月後、クラスAを使用し、クラスBとクラスCを完全に知らない(彼はそれらを必要としない)開発者は、クラスAに新しいメソッドを追加します。クラスBの同じ名前です。クラスCのオブジェクトはどうなりますか? AまたはBのメソッドを使用しますか?いくつかの言語では、コードが失敗する可能性があります。他の言語では、未定義の動作や非常に難しいバグを持つことがあります。
私はあなたの説明を考えていますs4メソッドについて少し混乱しています。それらはクラスではなく関数に属します。 – hadley
多くのS4リソースを認識していることを確認してください:http://stackoverflow.com/questions/4143611/sources-on-s4-objects-methods-and-programming-in-r –