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é?
Réponses
Trop de publicités?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
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.
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.