1
resposta

atributo salario protected e segurança do código

public abstract class Conta {

protected double saldo;
private int agencia;
private int numero;
private Cliente titular;
private static int total = 0;

//CODIGO OMITIDO

Eu não entendi bem porque não poderia usar private no salario, visto que é um atributo perigoso para as contas filhas, pois no estado de protected consigo alterar facilmente nas outras classes filhas. Por exemplo, se eu crio um objeto Funcionario numa classe de testes, consigo setar qualquer salario que eu quiser e o código compila normalmente.

public class TesteFuncionario {

public static void main(String[] args) {
Funcionario nico = new Designer();
nico.setCpf("888.888.888-98");
nico.setNome("Nico Steppat");
nico.setSalario(2552.97);
nico.salario = 3000000;

Como eu resolvo esse problema? Pois se eu colocar private os métodos de bonificação da classe de um funcionário comum param de compilar.

public class Designer extends Funcionario {

public double getBonificacao() {
    return super.salario = salario + 200;

}

}

1 resposta

Oi LEONARDO

Você pode deixar o atributo salario private e permitir a leitura e escritra desse campo apenas pelos métodos getters e setters, dessa forma a classe Conta tem controle sobre a lógica para manipulação desse atributo.