/ / Herança na linguagem Java - java, herança

Herança na linguagem Java - java, herança

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 № 1

Veja a diferença entre herança transitiva (C herda diretamente de B e transitivamente de A):

insira a descrição da imagem aqui

e herança múltipla (C herdando de A e B):

insira a descrição da imagem aqui

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.

aa

na sua pergunta A directly inherit B e Object class é herdado por B não por AIsso é 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!