eu estou dando uma olhada na apostila da caelum na parte de poliformismo e la simplismente nao tem sobrecarga… ele passa funcionario e ja identifica qual metodo que deve retornar!
Provavelmente o método registra nao lida com Gerente nem Funcionarios, mas com Empregados (assumindo que tanto Gerente qto Funcionarios
extendem de Empregado )… como tanto gerente qto funcionarios sao empregados, nao há problema… mas note que, com a referencia de Empregado (a superclasse) vc so vai poder usar os metodos definidos NA superclasse
Ele faz mais ou menos assim, sendo bem didático…
Quando vc invoca um método de um objeto, ele checa se este método existe, caso não, ele sobe a instancia ao seu “pai” até chagar na classe Objetc…
[code]public class Funcionario {
public void fazAlgumaCoisa(){
//Faz qq coisa
}
public void fazUmaCoisaUnica(){
//Faz qq coisa
}
}
public class Gerente Extends Funcionario {
public void fazAlgumaCoisa(){
//Faz qq coisa
}
public void fazOutraCoisa(){
//Faz qq coisa
}
}
Funcionário funcionario = new Funcionario();
funcionario.fazAlgumaCoisa(); //OK
funcionario.fazUmaCoisaUnica(); //OK
Gerente gerente = new Gerente();
gerente.fazAlgumaCoisa(); //Executa o fazAlgumaCoisa sobrescrito pelo Gerente
gerente.fazUmaCoisaUnica(); //Faz o fazUmaCoisaUnica do Funcionário, herdado no extends
gerente.fazOutraCoisa(); //Faz outra coisa, que é só do gerente[/code]