Sou iniciante gostaria de saber a resposta de uma discução da apostila da Caelum
2 respostas
arthur_roots
[b]Discuta com o instrutor e seus colegas alternativas ao uso do atributo protected na herança. Preciso realmente
afrouxar o encapsulamento do atributo por causa da herança? Como fazer para o atributo continuar
private na mãe e as filhas conseguirem de alguma formar trabalhar com ele?
Você poderia criar métodos get e set (públicos ou, como foi feito com o atributo, protegidos) para esse seu atributo. Assim você poderia manter o seu atributo privado e os novos métodos seriam utilizados pelas subclasses (ou outra classe dependendo da visibilidade do método) pudessem manipular esse atributo sem utilizar a variável diretamente em seu código.
[]s
Adriano_Almeida2 likes
Oi Arthur, tudo bem?
Primeira coisa que é importante você perceber é o “afrouxamento” do encapsulamento sendo feito através do protected no seu atributo. Dessa forma, qualquer classe filha sua poderia continuar mexendo nos atributos que são protected diretamente, fazendo atribuições que podem não fazer sentido nenhum (tudo por conta da quebra/afrouxamento do encapsulamento). Claro?
Uma alternativa realmente é fazer o que o Eberson disse, que é criar os famosos métodos getters e setters (públicos ou protected) e deixar seus atributos protected. Apenas atente para o fato de que se vc criar um método setter simples para qualquer atributo seria quase a mesma coisa que atribuir o valor diretamente pra variável. Poxa, mas então eu troquei seis por meia-dúzia (acesso direto à variável por uma chamada de método)? Não. Ao tornar o seu método visível, todos terão que chamar seu método onde vc poderá fazer verificações que impedirão aquelas atribuições sem sentido.
Outra coisa importante para vc tomar cuidado é de não sair criando getter/setter a esmo. Crie-os somente quando sentir a necessidade.