Suponha que temos 2 classes: - Funcionário com os métodos: setSalario(); getBonus(); * getNome();
- Gerente que herda de funcionário e possui os métodos:
- getBonus() - (reescrito da classe funcionário);
- cobraEntrega() - (método novo);
Minha dúvida é, por que o código abaixo não compila se a classe Funcionário for abstrata, mas compila e roda corretamente se a classe Funcionário não for abstrata? Em ambos os casos a JVM não deveria identificar em tempo de execução que o tipo instanciado na variável joaquim é Gerente?
Funcionario joaquim = new Gerente();
joaquim.setSalario(2000);
joaquim.cobraEntrega();