3
respostas

Protect x Get...

Na classe "super" "funcionario" eu mantive o atributo "salario" como "private" em vez de alterá-lo para "protect". Na classe "gerente", no método "getBonificacao" eu usei assim: return this.getSalario(); ou return super.getSalario();

Minha dúvida: Não fiquei convencido do "protect", uma vez que sem usar ele tudo funcionou perfeitamente. Isso não deveria dar problema?

3 respostas

Olá, Carlos... boa tarde! Do meu ponto de vista não deveria dar problema não, pois o "protected" ele deixa o atributo visível apenas para a classe a quele ele pertence e para suas filhas.

No caso, o que pode ter te gerado dúvida é que mesmo utilizando maior restrição, no caso o "private" o código funcionou, mas isso aconteceu porque você utilizou o método "getSalario()" da super classe. Não sei se respondi bem sua pergunta, qualquer coisa estou a disposição. Valeu!

Não existe problema, porque o método getSalario() da classe Funcionario é público. A classe gerente acessa um método público, que utiliza uma variável local privada. A variável se limita a aquele método, então não tem problema.

Boa noite, Carlos! Como vai?

Só a título de curiosidade, remova o método getSalario() da classe Funcionario que vc verá o caos surgir no seu código! Justamente pelo motivo que o Bruno e o William comentaram!

Ou seja, o protected faz mais sentido quando não há os métodos getter e setter públicos! Como no seu exemplo eles existem, então o protected realmente não era obrigatório.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!