1 - Classe Funcionario - Atenção no atributo salalario(private);
public class Funcionario {
private String nome;
private String cpf;
private double salario;
public double getBonificacao() {
return this.salario * 0.1;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public double getSalario() {
return salario;
}
public double setSalario(double salario) {
return this.salario = salario;
}
}
Classe gerente - Atenção para metodo getBonificacao(){}
Pode observar que não estou utilizando SUPER.SALARIO, neste método, que poderia, mas teria que alterar na Classe Funcionario private para protected salario.
public class Gerente extends Funcionario{
private int senha;
public boolean autentica(int senha) {
if (this.senha == senha) {
return true;
}
return false;
}
public double getBonificacao() {
return getSalario() + 1000;
}
public int getSenha() {
return senha;
}
public void setSenha(int senha) {
this.senha = senha;
}
}
Testando a Classe Gerente, dentro do método GetBonificacao, vai funcionar sem problema nenhum.
Ou seja, a variável(g1) que instacio o objeto gerente que é filha de funcionário, consigo definir:
g1.setsalario(); g1.setbonificação(); sendo este permanecendo private Salario (Classe Funcionario), e chamo getSalario, dentro do método getBonificacao() na classe gerente.
Resumindo, não preciso do Protected como visibilidade do atributo salario, dentro da classe funcionário.
public class TesteGerente {
public static void main(String[] args) {
Gerente g1 = new Gerente();
g1.setNome("Danilo Carvalho");
g1.setCpf("020202020");
g1.setSalario(7000.0);
g1.setSenha(123456);
System.out.println(g1.getNome());
System.out.println(g1.getCpf());
System.out.println(g1.getSalario());
System.out.println(g1.getBonificacao());
System.out.println(g1.getSenha());
System.out.println(g1.autentica(12345));
}
}
insira seu código aqui