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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top