Caro Sven
Herança múltipla resolve em C++ uma série de problemas difíceis de resolver
sem este recurso. Por exemplo, pode-se derivar de uma classe Persistente
para pôr em Banco de Dados, além das heranças próprias da hierarquia. Da
mesma forma, em CORBA pode-se fazer o binding por herança, sem comprometer
as heranças de interess.
Cria também problemas de seleção de métodos que tenham mesma assinatura
em alguma das bases herdadas, é verdade. Mas a solução existe e é até bastante
simples. Por exemplo
Pessoa
Funcionário Professor Aluno (herdam Pessoa)
Func-Prof Prof-aluno ... (Pessoas em mais de uma
função)
Fazem herança múltipla. Uma pessoa que seja Funcionário, Professor e Aluno,
ao mesmo tempo, e já tivemos vários aqui na nossa Universidade derivam
das três classes intermediárias.
Precisa-se gerenciar para ter uma única cópia de Pessoa (herança virtual
resolve). Se houver uma função de mesmo nome em Professor e em funcionário,
por exemplo, AtualizaPapel(), basta qualificar o ramo de herança desejado:
Professor :: AtualizaPapel(); // seleciona o ramo professor
Acho belíssima toda a discussão sobre Java mas incomoda-me a discussão
sobre C++ quando ela não aparece com a devida precisão. Mas absolutamente
não estou querendo criar polêmicas nem carregar bandeira.
Saudações
Prof. Vilmar
>Herança Multipla é um assunto muito complexo de C++. Antes de criar uma
>classe com herança multipla voce deve saber muito bem o que está
>fazendo. Não é possivel criar uma clase filho de duas classes que tem
um
>metodo foo com o mesmo signature.
>
>Precisa saber que Herança multipla não é uma coisa muito usado nem em
>C++. O caso que entra na minha cabeça é a classe iostream:
>
>class stream{
>
>}
>
>class instream : public stream{
>
>}
>
>class outstream : public stream{
>
>}
>
>class iostream : public instream : public outstream{
>}
>
>sven
>
>Jorge Martins wrote:
>
>> Jean,
>>
>> Mas isso é um enorme problema. A última coisa que você deseja fazer
com uma
>> classe sua é mudar o nomes dos métodos. Todas as chamadas para este
métodos
>> terão que ser alteradas. E ainda há vezes que você simplesmente não
pode
>> mudar esses nomes, ou por não ter o código fonte, ou por que alguma
outra
>> entidade que chama esse método não pode ser alterada.
>>
>> E como é a escolha de qual método você irá herdar caso as duas (ou mais
>> classes) pais tenham métodos com mesmo nome. Cada solução inventada
acaba
>> caindo em pequenos problemas, aumentando em muito o custo de implementação
e
>> a transparência fica prejudicada.
>>
>> Por causa disso, os desenvolvedores da linguagem java preferiram evitar
a
>> herança múltipla. E o uso de interface vem como uma solução alternativa
>> (pois não há aproveitamento de código) para manter a verificação de
tipo no
>> uso de polimorfismo.
>>
>> abraços
>>
>> Jorge
>>
>> -----Original Message-----
>> From: JEAN BARROS [mailto:[EMAIL PROTECTED]]
>> Sent: segunda-feira, 12 de março de 2001 12:57
>> To: [EMAIL PROTECTED]
>> Subject: [java-list] Herança Múltipla
>>
>>
>> Olá!
>>
>> Java suporta apenas herança simples, e implementa interfaces! certo?
>> Os defensores da herança simples em detrimento da herança múltipla,
>> geralmente
>> argumentam que herança múltipla tem o problema da ambigüidade, que é
muito
>> difícil de resolver! Gostaria de saber onde está o problema de resolver
>> ambigüidades? Pois se for apenas no nome de métodos, não ficaria fácil
>> resolver alterando os nomes? Ou essa minha análise é muito simplista,
e o
>> problema é bem maior? Me esclareçam por favor esta dúvida!
>>
>>
>> OBS: Não sou expert em C/C++, apenas quero tirar esta dúvida!
>>
>> Abraços
>> Jean Fábio
>>
>>
>> ____________________________________________________________________
>> Get free email and a permanent address at http://www.netaddress.com/?N=1
>>
>> ------------------------------ LISTA SOUJAVA ----------------------------
>> http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
>> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
>> regras da lista: http://www.soujava.org.br/regras.htm
>> para sair da lista: envie email para [EMAIL PROTECTED]
>> -------------------------------------------------------------------------
>>
>> ------------------------------ LISTA SOUJAVA ----------------------------
>> http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
>> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
>> regras da lista: http://www.soujava.org.br/regras.htm
>> para sair da lista: envie email para [EMAIL PROTECTED]
>> -------------------------------------------------------------------------
>>
>>
>
>
>------------------------------ LISTA SOUJAVA ----------------------------
>http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
>dúvidas mais comuns: http://www.soujava.org.br/faq.htm
>regras da lista: http://www.soujava.org.br/regras.htm
>para sair da lista: envie email para [EMAIL PROTECTED]
>-------------------------------------------------------------------------
>
>
__________________________________________________________
https://webmail.mackenzie.com.br - O Webmail do Mackenzie!
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------