6

Когда я пишу класс Widget.javaБудет ли публичный конструктор по умолчанию, созданный компилятором?

public class Widget { 
    int data; 
    String name; 
} 

будет конструктор сгенерированный компилятором быть общественного или по умолчанию?

публики будет как

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

, тогда как по умолчанию похоже на

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

Публичная вещь будет. – qqilihq

ответ

8

Это зависит от вашего видимости класса .The компилятора использует видимость класса и генерирует конструктор по умолчанию без аргументов с такая же видимость

1

Как классы v является публичной, она всегда будет публичным конструктором.

6

Как сказано в JLS

Если класс не содержит конструктор деклараций, то конструктор по умолчанию, который не принимает никаких параметров автоматически предоставляется:

  1. Если класс объявлен публично, то конструктор по умолчанию неявно, учитывая открытый модификатор доступа;
  2. Если класс объявлен защищенным, то конструктор по умолчанию неявно предоставил защитник доступа;
  3. Если класс объявлен приватным, то конструктор по умолчанию: , неявно заданный модификатор доступа private;
  4. В противном случае, конструктор по умолчанию имеет доступ по умолчанию подразумевается нет модификатора доступа
1

Это будет public как видимость класса является публичной

public Widget() {} 
0

Если ваш класс является общедоступным, то конструктор по умолчанию будет публичным, поэтому в вашем случае. Поскольку класс Widget является общедоступным, его конструктор по умолчанию, предоставленный компилятором, также будет публичным. See this

1

В зависимости от класса видимости. Для вашего класса конструктор dafault будет публичным.

В классе, если класс объявлен открытым, то конструктор по умолчанию неявно получает общедоступный модификатор доступа (§6.6); если класс объявлен защищенным, то конструктор по умолчанию неявно получает защитный код доступа (§6.6); если класс объявлен приватным, то конструктор по умолчанию неявно получает доступный модификатор доступа (§6.6); в противном случае конструктор по умолчанию имеет доступ по умолчанию, подразумеваемый модификатором доступа.

От here.

Смежные вопросы