123 votes

Quel est le spécificateur d'accès par défaut en Java?

Donc, je viens de commencer à lire un livre en Java et je me suis demandé; quel spécificateur d'accès est celui par défaut si aucun n'est spécifié?

130voto

Keats Points 8938

La visibilité par défaut est connue sous le nom de "paquet privé" (bien que vous ne puissiez pas l'utiliser explicitement), ce qui signifie que le champ sera accessible depuis le même paquet que celui auquel appartient la classe.

Comme l'a souligné mdma, ce n'est pas vrai pour les membres de l'interface, pour lesquels la valeur par défaut est "public".

Voir les spécificateurs d'accès de Java

87voto

mdma Points 33973

La valeur par défaut spécificateur dépend du contexte.

Pour les classes, et les déclarations interface, la valeur par défaut est colis privé. Cela tombe entre privé et protégé, permettant aux classes du même package d'accès. (protégé est comme cela, mais aussi en permettant d'accéder aux sous-classes à l'extérieur de l'emballage.)

class MyClass   // package private
{
   int field;    // package private field

   void calc() {  // package private method

   }
}

Pour les membres d'interface (champs et méthodes), l'accès par défaut est public. Mais notez que la déclaration d'interface elle-même les valeurs par défaut de colis privé.

interface MyInterface  // package private
{
   int field1;         // static final public

   void method1();     // public abstract
}

Si nous avons la déclaration

public interface MyInterface2 extends MyInterface
{

}

Les Classes à l'aide de MyInterface2 pouvez alors voir champ1 et method1 de la super interface, parce qu'ils sont publics, même s'ils ne peuvent pas voir la déclaration de MyInterface lui-même.

17voto

Michael Borgwardt Points 181658

Si aucun spécificateur d'accès n'est donné, il s'agit d'un accès au niveau du package (il n'y a pas de spécificateur explicite pour cela) pour les classes et les membres de la classe. Les méthodes d'interface sont implicitement publiques.

10voto

Johannes Wachter Points 1664

La visibilité par défaut (pas de mot-clé) est package, ce qui signifie qu'il sera disponible pour toutes les classes situées dans le même package.

Une note latérale intéressante est que protected ne limite pas la visibilité aux sous-classes, mais également aux autres classes du même package.

3voto

Brian Agnew Points 143181

Voir ici pour plus de détails. La valeur par défaut est no privé / public / protégé, mais une spécification d'accès complètement différente. Il n'est pas largement utilisé et je préfère être beaucoup plus spécifique dans mes définitions d'accès.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X