Superclasses frágeis?

Olá galera

Estou começando no mundo Java e lendo um livro da linguagem, o autor cita como um dos motivos de Java suprimir heranças múltiplas e as substituir por interfaces seria os problemas com superclasses frágeis :

“Os problemas associados às superclasses frágeis (um termo utilizado para descrever uma maneira instável onde múltiplas classes herdadas seriam utilizadas no c++) foram considerados grandes demais”

tentei mas não consegui entender, o que são superclasses frágeis ???

desde já Thanks…
e parabéns pelo site, é muito maneiro.

Atila

Bom,

Não concordo que esse seja o motivo por não existir multipla herança, superclasses frágeis é um problema em c++ que ocorre qdo vc adciona alguma coisa na superclasse, por exemplo um variável membro.

O q acontece é que vc deve então recompilar todos as subclasses. Existem meios de se previnir isso, mas são chatos e difíceis.

No java isso não ocorre porque o interpretador é quem resolve os nomes, o java não guarda referência numérica na compilação.

Mais informações : http://java.sun.com/docs/white/langenv

Para mim, o maior motivo pelo qual não existe herença mútipla é o problema do diamante, vc pode encontrar mais sobre ele na net.

[]'s

Boas,

Tal como disse o C++ usava o mecanismo de herança multipla o que dava bastantes problemas porque cada classe superior iria ter a sua propria implementação podendo originar alguns problemas. No Java isso já não acontece porque cada classe só pode ser derivada de uma outra classe apenas, embora haja a hipotese de implementar quantas interfaces voçê quiser criando uma variante de herança multipla e como não podemos implementar codigo numa interface o problema do C++ desaparece.

Exemplo:

public class B extends A implements C, D, E { }
Esta classe extende da classe A mas ainda implementa as interfaces C, D e E.
Foi isto que eu percebi do que li até agora, espero que tenha sido esclarecedor.

PEACE!

Segundo o autor Cay Hortsmann: “…herança múltipla torna os compiladores extremamente complexos, como em C++ ou simplesmente ineficientes, como em Eiffel…”;

O fato é que a herança múltipla é complexa de ser compreendida e pode tornar o projeto de classes um caos, onde a hierarquia tem tantas ramificações que poderia deixar qualquer um confuso, tornando o projeto propenso a erros.

As interfaces parecem ser muito mais simples de serem assimiladas e contribui para um projeto de classes limpo e robusto. Aqui no GUJ tem um artigo excelente sobre Interfaces.