Dizemos que o java segue um único modelo de herança, ou seja, uma classe Java pode estender apenas uma classe no máximo. e depois dizer que toda classe java é herdada da classe Object.
Suponha que haja duas classes A e B. Tanto A como B se estendem de Object. Agora suponha que A estenda B. Isso não implica que A tem herança múltipla (A é herdado de B e Objeto de Classe)?
Respostas:
9 para resposta № 1Veja a diferença entre herança transitiva (C herda diretamente de B e transitivamente de A):
e herança múltipla (C herdando de A e B):
Tudo é apenas adicionado, exceto os métodos coma mesma assinatura, que é substituída. Até mesmo variáveis declaradas com o mesmo nome são adicionadas, elas são "escondidas", mas ainda podem ser acessadas usando a conversão, ou a palavra-chave super, se ela é o pai imediato.
4 para resposta № 2
Excepting Object, which has no superclass, every class has one and |
only one direct superclass (single inheritance). In the absence of any
other explicit superclass, every class is implicitly a subclass of Object.
na sua pergunta A directly inherit B
e Object class
é herdado por B não por A
Isso é chamado herança transitiva
3 para resposta № 3
Você pode ter uma cadeia de herança, isso não é herança múltipla. Você não pode ter uma classe que herda de mais de uma classe de uma vez.
Proibido pela linguagem:
class A extends B, C
{}
2 para resposta № 4
Herança Múltipla: (Não suportado pelo Java)
Classe A estende o objeto
Classe B estende o objeto
Classe C estende A, B
Object
/
/
/
A B (Not supported by Java)
/
/
/
C
Herança Multinível / Transitiva: (Suportado por Java)
Classe B estende o objeto
Classe A extedns B
Object
|
|
|
B (Supported by Java)
|
|
|
A
1 para resposta № 5
Uma classe Java só pode diretamente herda de uma classe. Nesse caso, A
não faz diretamente herdar de Object
, Apenas de A
.
Você está apenas perguntando do ponto de vista da terminologia, ou existe algum comportamento você está interessado em?
1 para resposta № 6
O objeto A estende o objeto B, que estende o objeto. Não é herança múltipla, é hierarquia
1 para resposta № 7
Os principais problemas com herança múltipla é a ambigüidade, quando duas classes definem o mesmo método e estão sendo sobrepostas e problema de diamante. Java não sofre com isso, permitesubstituindo apenas uma única classe. Isso obviamente se refere à substituição direta e não lida com hierarquias de herança. Esse tipo de herança (A sobrepondo B, B ignorando e assim por diante) não é afetado por nenhum problema.
1 para resposta № 8
Em Java, cada classe pode diretamente estender apenas de 1 classe pai. Então, ou B se estende de Objeto e A se estende de B, xor A e B estendem-se do objeto.
Você está supondo que ambos são verdadeiros ao mesmo tempo - isso não é possível em Java.
Se B se estender de Object, e A se estender de B, então sim, A herda de Object, mas ainda existe um único pai para cada classe:
class Object
|
+-- class B
|
+-- class A
Em outras palavras, o Java não suporta múltiplas heranças.
0 para a resposta № 9
Java não permite estender mais de 1super classe. No entanto, uma classe pode implementar várias interfaces. Você pode criar uma estrutura de interfaces e classes abstratas que permitem hackar mais de uma classe. Boa sorte!