Java: Acesso modificador mais restritiva do que 'protegido', menos restritiva do que 'privado'?
-
06-07-2019 - |
Pergunta
Eu quero algo semelhante ao protected
, onde apenas uma classe que implementa o campo protected
e qualquer coisa que subclasses pode acessá-lo.
Então, eu quero ser capaz de declarar uma variável na classe base como private
, mas ainda ser capaz de acessá-lo de uma subclasse.
Talvez isso é contra a própria natureza da subclasse, private
, e / ou protected
.
Será que algo assim existe em Java?
Solução
Existem apenas quatro níveis de acesso para campos em Java:
-
private
- pacote-privadas (padrão, sem modificador de acesso)
-
protected
-
public
protected
permitirá subclasses, outras classes no mesmo pacote, e membros da própria classe para acessar o membro protected
.
A resposta curta é, não há nenhuma maneira de conseguir exatamente o que é desejado.
Para uma descrição desses quatro modificadores de acesso, Controlando Acesso aos membros de uma classe de os tutoriais Java tem mais específico informações.
Outras dicas
Se você controlar a base de código, você pode sempre controlar o que vai para o pacote com os baseclass -. Se ele está sozinho em sua embalagem, única subclasses pode acessar o membro que deseja manter privadas exceto para subclasses
Não, não há nenhuma acesso modificador para fazer exatamente isso. O modificador protected
é a coisa mais próxima, mas que expõe o campo a qualquer classe no mesmo pacote, bem como para subclasses (dentro ou fora do mesmo pacote).
Não é possível. U ainda pode declarar suas variáveis ??como privadas, em seguida, declarar métodos públicos que modificar as variáveis ??em superclasse. Você, então, chamar o método público sobre a variável.