Boa noite, estou com duvida na parte de se eu pegar a parte do super class, ai gero uma class filha e depois uma class neta, a neta ira herda só o código da filha?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite, estou com duvida na parte de se eu pegar a parte do super class, ai gero uma class filha e depois uma class neta, a neta ira herda só o código da filha?
Boa noite Erick, Tudo bem?
Nao, a classe neta ira herdar os metodos da classe Mae e Filha nesse caso.
Exemplo: Classe Mae
package exemplo.heranca;
public class ExemploSuper {
private String atributoSuper;
public String getAtributoSuper() {
return atributoSuper;
}
public void setAtributoSuper(String atributoSuper) {
this.atributoSuper = atributoSuper;
}
public void chamaExemploSuper() {
System.out.println("Voce esta chamando um metodo da Classe ExemploSuper o atributoSuper dela vale: " + atributoSuper);
}
}
Classe Filha
package exemplo.heranca;
public class ExemploFilha extends ExemploSuper {
public void chamaExemploFilha() {
System.out.println("Voce esta chamando um metodo da Classe ExemploFilha o atributoSuper dela vale: " + super.getAtributoSuper());
}
}
ClasseNeta
package exemplo.heranca;
public class ExemploNeta extends ExemploFilha {
public void chamaExemploNeta() {
System.out.println("Voce esta chamando um metodo da Classe ExemploNeta o atributoSuper dela vale: " + super.getAtributoSuper());
}
}
Classe de Teste:
package exemplo.heranca;
public class TestaHeranca {
public static void main(String[] args) {
ExemploSuper exemploSuper = new ExemploSuper();
ExemploFilha exemploFilha = new ExemploFilha();
ExemploNeta exemploNeta = new ExemploNeta();
System.out.println("Seta os atributos das classes Super, Filha e Neta");
exemploSuper.setAtributoSuper("Atributo da classe Super");
exemploFilha.setAtributoSuper("Atributo da classe Filha");
//Note que aqui estamos chamando um metodo da classe super atraves da Neta.
exemploNeta.setAtributoSuper("Atributo da classe Neta");
System.out.println("Chamada da classe Super");
exemploSuper.chamaExemploSuper();
System.out.println("Chamadas da classe Filha");
exemploFilha.chamaExemploFilha();
exemploFilha.chamaExemploSuper();
System.out.println("Chamadas da classe Neta");
exemploNeta.chamaExemploNeta();
exemploNeta.chamaExemploFilha();
exemploNeta.chamaExemploSuper();
}
}
Voce devera ver o resultado a seguir:
Seta os atributos das classes Super, Filha e Neta
Chamada da classe Super
Voce esta chamando um metodo da Classe ExemploSuper o atributoSuper dela vale: Atributo da classe Super
Chamadas da classe Filha
Voce esta chamando um metodo da Classe ExemploFilha o atributoSuper dela vale: Atributo da classe Filha
Voce esta chamando um metodo da Classe ExemploSuper o atributoSuper dela vale: Atributo da classe Filha
Chamadas da classe Neta
Voce esta chamando um metodo da Classe ExemploNeta o atributoSuper dela vale: Atributo da classe Neta
Voce esta chamando um metodo da Classe ExemploFilha o atributoSuper dela vale: Atributo da classe Neta
Voce esta chamando um metodo da Classe ExemploSuper o atributoSuper dela vale: Atributo da classe Neta
Ou seja, voce consegue acessar os metodos (e atributos, caso sejam protected ou public) atraves das classes mais especificas.
Se tiver alguma dificuldade para rodar o codigo acima, me avisa que commito no GitHub. Abs
Aaaa entendi obrigado Matheus