Eu não consegui entender o porque de usar a instancia da forma:
Funcionario g = new Gerente();
se o métodos: "registra" consegue receber como parâmetro a instancia na forma:
Gerente g = new Gerente() ;
Eu não consegui entender o porque de usar a instancia da forma:
Funcionario g = new Gerente();
se o métodos: "registra" consegue receber como parâmetro a instancia na forma:
Gerente g = new Gerente() ;
Olá Rodrigo,
todo o exemplo foi utilizado em um contexto para exemplificar o que é polimorfismo. Que é a capacidade de atribuir a uma variável do supertipo uma referência do subtipo e em tempo de execução chamar a versão do método do tipo da referência e não da variável.
Isso é o que o Java permite através da OO e polimorfismo.
Desta forma, entendo que o polimorfismo quem provoca é o método que recebe o objeto. Na classe de aplicação, você não precisa obrigatoriamente fazer essa atribuição, somente na classe que irá processar o objeto. A demonstração foi feita para mostrar que é possível.
Até porque, na classe aplicação vc estará manipulando métodos específicos do objetos, que não existem na sua superclasse. E se fizer ali o upcasting terá que ficar fazendo downcasting para executar esses métodos. =)