Existe algum modo de acessar um atributo privado da classe pai no construtor da classe filha?
Sei que posso trocar a visibilidade do atributo, mas ele sendo privado, existe algum modo?
- Você pode usar um getter
- Você pode definir o atributo como protected
[quote=entanglement]1) Você pode usar um getter
2) Você pode definir o atributo como protected[/quote]
falou e disse!
Vou dar um exemplo. Eu tenho um atributo privado nome na classe pai. Não existe construtor recebendo nome na classe pai.
Na classe filha, eu tenho que fazer um construtor recebendo por parâmetro nome, mas nome é privado da classe pai.
Sem trocar a visibilidade do atributo, existe alguma forma de fazer isso?
Só utilizando um método com outro modificador (public ou protected) q atribua um valor a essa variável ou alterando seu valor no construtor da classe pai, se não for assim, sem chance. Variáveis privadas só são acessadas dentro da própria classe (a única excessão são classes internas).
Obrigado =D
Em herança, se colocam na classe pai os atributos comuns às classes filhas. Se você não vai usar em toda classe pai, por que não coloca esse atributo direto no filho?
Você sempre poderá fazer via reflexão.
Mesmo que o atributo seja privado, você pode coletá-lo de qualquer instância.
Seria algo como:
private Object getFieldDaSuperClasse() {
Field field = getSuperClass().getDeclaredField("nomeDoField");
field.setAcessible(true);
return (CastParaOTipoDoField) field.get(this);
}