Optei por usar o modificador de acesso protected ao invés do método getter, para ver o funcionamento.
Pessoa.java
public abstract class Pessoa {
protected String nome;
protected int idade;
public Pessoa(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
public abstract void exibirDados();
}
Aluno.java
public class Aluno extends Pessoa{
private double nota;
public Aluno(String nome, int idade, double nota) {
super(nome, idade);
this.nota = nota;
}
@Override
public void exibirDados() {
System.out.printf("Aluno: %s - Idade: %d - Nota: %.1f\n",
nome, idade, nota);
}
}
Docente.java
public class Docente extends Pessoa{
private String disciplina;
public Docente(String nome, int idade, String disciplina) {
super(nome, idade);
this.disciplina = disciplina;
}
@Override
public void exibirDados() {
System.out.printf("Docente: %s - Idade: %d - Disciplina: %s\n",
nome, idade, disciplina);
}
}
Principal.java
public class Principal {
public static void main(String[] args) {
Pessoa aluno1 = new Aluno("Julia", 16, 8.5);
Pessoa aluno2 = new Aluno("Caio", 17, 7.2);
Pessoa docente1 = new Docente("Marta", 40, "Matemática");
Pessoa docente2 = new Docente("Roberto", 38, "História");
aluno1.exibirDados();
aluno2.exibirDados();
docente1.exibirDados();
docente2.exibirDados();
}
}