8
votes

Le constructeur par défaut généré par le compilateur sera-t-il public?

Quand j'écris une classe widget.java code> xxx pré>

le constructeur généré par le compilateur sera public fort> ou défaut ? p>

public serait comme p> xxx pré>

alors que la défaut similaire à p>

public class Widget {
    int data;
    String name;
    Widget() {}
}


0 commentaires

7 Réponses :


10
votes

Cela dépend de votre visibilité de classe .Le compilateur utilise la visibilité de la classe et génère un constructeur par défaut de no-arg avec la même visibilité


0 commentaires

1
votes

Comme la visibilité des cours est publique, il s'agira toujours d'un constructeur public.


0 commentaires

6
votes

Comme dit dans JLS

Si une classe ne contient pas de déclarations de constructeur, un constructeur par défaut qui ne prend aucun paramètre n'est fourni automatiquement:

  1. Si la classe est déclarée publique, le constructeur par défaut est implicitement donné le public de modificateur d'accès;
  2. Si la classe est déclarée protégée, le constructeur par défaut est implicitement donné le modificateur d'accès protégé;
  3. Si la classe est déclarée privée, le constructeur par défaut est implicitement donné le modificateur d'accès privé;
  4. sinon, le constructeur par défaut a l'accès par défaut impliqué par Pas de modificateur d'accès

0 commentaires

1
votes

Ce sera public car la visibilité de la classe est publique xxx


0 commentaires

0
votes

Si votre classe est publique, le constructeur par défaut serait public dans votre cas, car la classe widget est publique que son constructeur par défaut fourni par le compilateur serait également public. Voir ceci < / p>


0 commentaires

1
votes

Ce sera widget public () {}


0 commentaires

1
votes

dépend de la visibilité de la classe. Pour votre constructeur de classe Dafault va être public.

Dans un type de classe, si la classe est déclarée publique, le constructeur par défaut est implicitement donné le modificateur d'accès public (§6.6); Si la classe est déclarée protégée, le constructeur par défaut est implicitement donné le modificateur d'accès protégé (§6.6); Si la classe est déclarée privée, le constructeur par défaut est implicitement donné le modificateur d'accès privé (§6.6); Sinon, le constructeur par défaut a l'accès par défaut impliqué par aucun modificateur d'accès.

de ici .


0 commentaires