Um exemplo que fiz agora:
package br.com.guj.exemploheranca;
public abstract class Pessoa {
protected String nome;
protected String endereco;
protected int idade;
protected abstract void seApresentar();
}
Essa classe só declara os atributos de Pessoa…
agora tem essa:
package br.com.guj.exemploheranca;
public class Adriano extends Pessoa {
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return this.endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public int getIdade() {
return this.idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
@Override
protected void seApresentar() {
System.out.println("Meu nome e: " + this.getNome() + ", moro em " + this.getEndereco() + ", tenho " + this.getIdade() + " anos de idade.");
}
public static void main(String[] args) {
Adriano eu = new Adriano();
eu.setNome("Adriano Ohana");
eu.setEndereco("Belem-PA");
eu.setIdade(26);
eu.seApresentar();
}
}
Perceba que na classe Adriano, pude fazer todos os métodos Get e Set como se os atributos, nome, endereço e idade fossem de minha própria classe… se vc tentar usá-los diretamente, também consegue… isso na subclasse… se vc usar alguma IDE e for brincar com esse exemplo, vai perceber que a mesma lê os atributos como se fossem da própria classe Adriano… pra treinar, faça uma classe Claudia e Teste aí pra ver no que dá…
PS: da forma que está não precisava do protected pois as classes estão no mesmo pacote… apenas finja por um momento que estão em pacotes diferentes…
Espero que tenha entendido.
Att.