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, 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