5

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

https://github.com/hadley/devtools/wiki/S4で読みました

S4は多重継承をサポートしていることに注意してください。ただし、メソッドの検索が非常に複雑になるため、これは細心の注意を払って使用する必要があります。

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

4

1 に答える 1

11

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

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

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

于 2012-01-12T08:40:47.127 に答える