Подтвердить что ты не робот

По умолчанию не являются конструкторами Java?

У меня есть два класса в двух разных пакетах. Для одного класса я определил конструктор, не устанавливая для него модификатор доступа. Я хочу создать экземпляр объекта этого класса в другом пакете и получить ошибку "the constructor xxx() is not visible".

Если я определяю доступ, измененный на public, это нормально. Я думал, что конструкторы общедоступны по умолчанию?

4b9b3361

Ответ 1

нет спецификатора доступа!= public

Никакой модификатор не является приватным пакетом. check doc

Ответ 2

Нет, это не так. По умолчанию они имеют видимость пакета.

Ответ 3

Доступ по умолчанию (по умолчанию...) по умолчанию. Также известен как частный пакет. Рассмотрите: если они были public по умолчанию, как бы вы указали, что конструктор не был public, а на самом деле был приватным пакетом? Нет ключевого слова, соответствующего закрытому пакету, с которым указывается это.

Ответ 4

Если вы не написали модификатор доступа, он имеет значение по умолчанию, что означает закрытый пакет. Например. ни один класс вне пакета не может получить к нему доступ.

Ответ 5

Нет. они имеют спецификатор доступа по умолчанию. то есть они имеют видимость пакета.

Ответ 6

Вы можете использовать модификаторы доступа в объявлении конструктора, чтобы контролировать, какие другие классы могут вызвать конструктор. Если вы не объявляете конструктор явно открытым, он отображается только в том же пакете, где он был объявлен (доступ к пакету).

Ответ 7

В классе весь метод без модификатора доступа имеет видимость пакета. Тем не менее, в интерфейсах методы всегда имеют общественную видимость.