Extends em Orientação a Objetos

12/06/2019

12

Uma classe pode herdar atributos e métodos de uma subclasse, podemos implementar a herança no Java através da palavra reservada extends na declaração da classe.

Essa afirmação está correta, incorreta ou redundante?
Responder

Post mais votado

13/06/2019

Obrigado pela resposta! Mas nesse caso, a palavra "classe" pode ser uma sub ou super classe na sua opinião?
Pois se ela for uma subclasse da subclasse ela poderá herdar seus métodos e atributos, mas levando em consideração o mesmo pensamento se ela for uma superclasse não herdará.


Elias, o que vai dizer se uma classe é super ou sub é o contexto. Veja o seguinte exemplo:
public class Animal{

}

public class Mamifero extends Animal {

}

public class Felino extends Mamifero {
    
}


Se analisarmos a relação entre Animal e Mamifero, Animal é a superclasse e Mamifero é a subclasse. Se formos analisar a relação entre Mamifero e Felino, Mamifero passaria a ser superclasse. Então tudo vai depender do contexto. O que é certo é que uma classe jamais herda da sua subclasse. Animal não pode herdar nada de Mamifero e Mamifero não pode herdar nada de Felino. Fui mais claro agora?
Responder

Mais Posts

12/06/2019

Alex William

Olá amigo, tudo bem?

Acredito que esteja incorreta, pois é a subclasse que herda da classe pai/SuperClasse os metodos e atributos.

Espero ter ajudado. :D
Responder

12/06/2019

Elias Higor

Obrigado pela resposta! Mas nesse caso, a palavra "classe" pode ser uma sub ou super classe na sua opinião?
Pois se ela for uma subclasse da subclasse ela poderá herdar seus métodos e atributos, mas levando em consideração o mesmo pensamento se ela for uma superclasse não herdará.
Responder

12/06/2019

Alex William

Olá, amigo.

Acho que não especifiquei bem o que eu quis dizer.

Realmente seu levantamento tem validade, voce pode ter uma subclasse de uma subclasse, por exemplo:
Class Teste{}

Class TesteUm extends Teste{}

Class TesteDois extends TesteUm{}



Nesse caso temos uma subclasse de uma subclasse.

O que eu quis dizer é que voce não pode extender uma classe de uma subclasse dela mesma. Ex:
Class Teste{}

Class TesteUm extends Teste{}

Class TesteDois extends TesteUm{}

// Aqui acredito que não possa ocorrer
Class Teste extends TesteUm{}


Não sei se a linguagem permite isso, mas em termos de fluxo e herança, ficaria redundante extender desta forma.

Espero ter ajudado. :D
Responder

12/06/2019

Alex William

Olá, amigo.

Acho que viajei um pouco na minha ultima resposta com relação aos exemplos.
O exemplo 2 nem teria como ocorrer. Mas voce esta correto, pode haver uma subclasse de uma subclasse como no exemplo 1. Ignore o exemplo 2, porque eu viajei na maionese kkkkkkkkk.

Espero ter ajudado. :D
Responder