2012-01-12 8 views
5

estoy creando clases S4 en R.¿Por qué no se recomienda usar herencia múltiple?

leí en https://github.com/hadley/devtools/wiki/S4

Tenga en cuenta que S4 soporta la herencia múltiple, pero esto se debe utilizar con extrema precaución ya que hace que las operaciones de búsqueda método extremadamente complicada.

¿Qué es la búsqueda de métodos y por qué es más compleja con herencia múltiple?

+0

Solo asegúrate de estar al tanto de los numerosos recursos de S4: http://stackoverflow.com/questions/4143611/sources-on-s4-objects-methods-and-programming-in-r –

Respuesta

10

Al escribir f(x), con x pertenecientes a varias clases (por ejemplo, A, B y C), el equipo tiene que decidir qué f método para llamar (que a partir de la clase A, B, o C): esto se llama "búsqueda de método".

La herencia múltiple a menudo plantea problemas cuando el código evoluciona.

Imagine que ha escrito dos clases base A y B, y la clase C hereda de ambas. Todo funciona bien Unos meses más tarde, un desarrollador, que usa la clase A, y desconoce por completo las clases B y C (no las necesita), agrega un nuevo método a la clase A. Sin su conocimiento, ya existe un método con el mismo nombre en la clase B. ¿Qué sucede con los objetos de la clase C? ¿Se usará el método de A o B? En algunos idiomas, el código puede fallar, en otros puede tener un comportamiento indefinido y un error muy difícil de detectar.

+3

Creo que tu explicación está un poco confundido con los métodos s4; pertenecen a funciones, no a clases. – hadley

Cuestiones relacionadas