1
resposta

Funcionario g1 = new Gerente(); - Referência Genérica

Funcionario g1 = new Gerente();

Ainda não consegui entender isso.

g1 vai ser um objeto da classe Gerente, mas como foi guardado numa referência Funcionario não vai poder acessar a variável int senha e nem o método public boolean autentica(int senha).

1 resposta

Bom dia, Aron, tudo bom? Basicamente é isso que você disse. A variável g1 será vista pelo compilador como o tipo Funcionario e como Funcionario não declara os metodos de autencacao e nem o campo senha, mesmo que você de new em um Gerente o compilador só enxergará aquela variável como um Funcionario e só te garantira acesso ao que foi declarado no tipo que o compilador conhece. Você pode fazer o cast (sempre com cuidado) para o tipo específico caso queira utilizar algum metodo ou propriedade dele.