¿Por qué no se recomienda utilizar herencia múltiple?
-
27-10-2019 - |
Pregunta
Estoy creando clases S4 en R.
Leí en https://github.com/hadley/devtools/wiki/S4
Tenga en cuenta que S4 admite herencia múltiple, pero esto debe usarse con extrema precaución ya que hace que la búsqueda de métodos sea extremadamente complicada.
¿Qué es la búsqueda de métodos y por qué es más compleja con herencia múltiple?
Solución
Cuando escribe f(x)
, con x
perteneciente a varias clases (digamos, A, B y C), la computadora tiene que decidir qué método f
llamar (el 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 después, 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 saberlo, ya existe un método con el mismonombre en la clase B. ¿Qué sucede con los objetos de la clase C?¿Se utilizará 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.