Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvOpPkPPr 123 of 147 menu
◀ ▶

Классы без public в Java

Если у класса верхнего уровня нет модификатора public, он получает доступ по умолчанию (его часто называют package-private). Такой тип видят только файлы того же пакета; из другого package обратиться к нему нельзя:

data-pPath2="src/orders/OrderHelper.java" data-pPath3="src/app/Main.java" package orders; class Order { int id; Order(int id) { this.id = id; } } package orders; public class OrderHelper { public Order create() { return new Order(1); } } package app; import orders.OrderHelper; public class Main { public static void main(String[] args) { OrderHelper helper = new OrderHelper(); System.out.println(helper.create()); } }

Класс OrderHelper публичен и доступен в app. Класс Order без public скрыт снаружи orders, но OrderHelper в том же пакете спокойно создаёт его экземпляры.

Так устроена типичная схема: наружу выставляют public фасад, а вспомогательные классы оставляют без public, чтобы другие пакеты не зависели от деталей реализации.

В пакете hr объявите класс Employee без public с полем name. Объявите public класс EmployeeService, который создаёт Employee и возвращает имя. В пакете app вызовите EmployeeService и выведите результат.

Объясните словами, почему из пакета reports нельзя написать new warehouse.Stock();, если Stock объявлен без public в warehouse.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить