Olá pessoal, tubo bem!
Sobre a boa prática, seria mais apropriado alterar salario para protected, ou pode chamar o getSalario na classe Gerente como no código abaixo.
public class Funcionario {
private String nome;
private String cpf;
private double salario;
public class Gerente extends Funcionario{
private int senha;
public void setSenha(int senha) {
this.senha = senha;
}
public boolean autentica(int senha) {
if(this.senha == senha) {
return true;
}else {
return false;
}
}
public double getBonificacao() {
return getSalario();
}