O que foi feito, é que inicialmente foi criado para mostrar o método autentica, específico para o objeto Gerente, por isso foi feito Gerente g1 = Gerente(0);, porém o que acontece agora se usarmos o polimorfismo é que o método g1.autentica(0); deixa de compilar, indicando que precisamos criar um método dentro do objeto Funcionário, porém isso perderia a exclusividade da senha para o Gerente!
Eu achei interessante sua correção, mas surge esse problema. Ao fazer dessa forma, o método autentica deixa de funcionar para Gerente, que é um atributo que pertece apenas a ele.
Como sou iniciante, a solução sugerida pelo Eclipse foi ((Gerente) g1).autentica(2222);, voltando a funcionar. Existe um modo mais simples? Como eu olharia para essa linha tentando traduzir o feito?
Eu vi aqui (https://cursos.alura.com.br/forum/topico-chamando-um-metodo-da-classe-gerente-tendo-estanciado-o-gerente-como-funcionario-128547) um questionamento com relação a isso, porém não ficou claro para mim. Entendi sobre o casting, mas nesse caso, para mim, não parece uma questão de casting, pois não pretendo atribuir valor de um tipo a outro numa variável, mas apontar que o método se refere a tal objeto, nesse caso, Gerente, e somente a ele.
Obrigado