为什么不建议使用多重继承?

Roc*_*nce 5 inheritance r multiple-inheritance s4

我在R中创建S4类.

我在https://github.com/hadley/devtools/wiki/S4上读到

请注意,S4支持多重继承,但是应该非常谨慎地使用它,因为它使方法查找非常复杂.

什么是方法查找?为什么多重继承更复杂?

Vin*_*ynd 10

当您键入f(x),与x属于几类(比方说,A,B和C),计算机必须决定f调用(从A类,B或C)方法:这就是所谓的"方法查找".

当代码发展时,多重继承经常会出现问题.

想象一下,你已经写了两个基类A和B,而C类继承了它们.一切正常.几个月后,一个使用A类并且完全不知道B类和C类(他不需要它们)的开发人员为A类添加了一种新方法.他不知道,已经有了一种方法B类中的名称.C类对象会发生什么?是否会使用A或B的方法?在某些语言中,代码可能会失败,在其他语言中,您可能会有一个未定义的行为和一个非常难以捕获的错误.

  • 我认为你的解释对s4方法有点困惑 - 它们属于函数,而不属于类. (3认同)