Por que não é recomendado usar herança múltipla?
-
27-10-2019 - |
Pergunta
Estou criando classes S4 na R.
Eu li em https://github.com/hadley/devtools/wiki/S4
Observe que S4 suporta herança múltipla, mas isso deve ser usado com extrema cautela, pois torna a pesquisa de método extremamente complicada.
O que é pesquisa de método e por que é mais complexo com herança múltipla?
Solução
Quando você digita f(x)
, com x
pertencente a várias classes (digamos, A, B e C), o computador deve decidir qual método f
chamar (aquele da classe A, B ou C): isso é chamado de "lookup de método ".
A herança múltipla geralmente apresenta problemas quando o código evolui.
Imagine que você escreveu duas classes básicas A e B, e a classe C herda de ambas.Tudo funciona bem. Poucos meses depois, um desenvolvedor, que usa a classe A, e não conhece as classes B e C (não precisa delas), adiciona um novo método à classe A. Sem que ele saiba, já existe um método com a mesmanome na classe B. O que acontece com os objetos da classe C?O método de A ou B será usado?Em algumas linguagens, o código pode falhar, em outras você pode ter um comportamento indefinido e um bug muito difícil de detectar.