我在R中创建了S4类。
我在https://github.com/hadley/devtools/wiki/S4
中读到请注意,S4支持多重继承,但应使用此方法 非常谨慎,因为它使方法查找极其复杂。
什么是方法查找?为什么多重继承会更复杂?
答案 0 :(得分:10)
当您键入f(x)
,x
属于多个类(例如,A,B和C)时,计算机必须决定调用哪个f
方法(来自班级的方法) A,B或C):这称为“方法查找”。
当代码发展时,多重继承经常会出现问题。
想象一下,你已经写了两个基类A和B,而C类继承了这两个基类。一切正常。 几个月后,一个使用A类并且完全不知道B类和C类(他不需要它们)的开发人员为A类添加了一种新方法。他不知道,已经有了一种方法B类中的名称.C类对象会发生什么?是否会使用A或B的方法?在某些语言中,代码可能会失败,在其他语言中,您可能会有一个未定义的行为和一个非常难以捕获的错误。