Java: modificateur d'accès plus restrictif que "protégé", moins restrictif que "privé"?
-
06-07-2019 - |
Question
Je veux quelque chose de similaire à protected
, où seule une classe implémentant le champ protected
et tout élément sous-classe auquel elle est susceptible d'accéder peuvent y accéder.
Je souhaite donc pouvoir déclarer une variable de la classe de base comme privé
, tout en pouvant y accéder à partir d'une sous-classe.
Cela est peut-être contraire à la nature même des sous-classes, private
et / ou protected
.
Quelque chose comme cela existe-t-il en Java?
La solution
Il n'y a que quatre niveaux d'accès pour les champs en Java:
-
privé
- package-private (par défaut; pas de modificateur d'accès)
-
protected
-
public
protected
permettra aux sous-classes, aux autres classes du même package et aux membres de la classe même d'accéder au membre protected
.
La réponse courte est qu’il n’ya aucun moyen de réaliser exactement ce qui est souhaité.
Pour obtenir une description de ces quatre modificateurs d'accès, Contrôle de l'accès à Membres d'une classe de Les tutoriels Java sont plus spécifiques informations.
Autres conseils
Si vous contrôlez la base de code, vous pouvez toujours contrôler ce qui se trouve dans le package avec la classe de base. S'il est seul dans son package, seules les sous-classes peuvent accéder au membre que vous voulez garder privé, à l'exception des sous-classes.
Non, il n'y a pas de modificateur d'accès à fais exactement ça. Le modificateur protected
est la chose la plus proche, mais le champ est exposé à toutes les classes du même package ainsi qu'aux sous-classes (dans ou hors du même package).
Pas possible. Vous pouvez toujours déclarer vos variables privées, puis déclarer les méthodes publiques qui modifient les variables dans la superclasse. Vous appelez ensuite la méthode publique sur la variable.