Должен ли мы объявлять открытый конструктор, если класс объявлен как закрытый?

Я думаю, что в этом случае нет необходимости объявлять публичный конструктор, так как класс все равно недоступен вне пакета. Но есть ли какое-то скрытое влияние, когда класс имеет только частный конструктор пакета?

Ответы

Ответ 1

Нет, вам не нужно объявлять публичный конструктор; пакет частных конструкторов будет таким же удобным. Классы вне пакета не смогут использовать конструктор в любом случае, поскольку они не могут видеть класс.

Ответ 2

Если ваш класс является приватным пакетом, то уровни доступа, указанные ключевым словом modifier public, вместе с уровнем доступа к стандартным пакетам конструктора эквивалентны.

Однако вы можете указать, какое поведение вы намерены использовать в случае изменения видимости класса во время разработки. Это может произойти, когда вы открываете некоторые API, которые ранее были внутренними. В этом случае выглядит более консервативным объявление конструктора как частного пакета, так как вы не открываете все двери одновременно.

Ответ 3

мы не можем сделать конструктор общедоступным в частном классе, потому что доступ к частному классу не может выполняться снаружи, и ни один из его методов не может быть доступен, а поскольку конструкторы являются специальными функциями-членами, поэтому он также не может быть доступен извне, поэтому он не может быть объявлен открытым потому что это в конечном счете нарушает частное определение класса

Ответ 4

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