У Java є чотири доступні модифікатори доступу для методів:
public - будь-який клас може використовувати цей метод.
protected - класи в одному пакеті і підкласи в будь-якому пакеті можуть використовувати цей метод.
private - лише цей клас може використовувати цей метод.
no modifier ("пакет приватний") - цей клас можуть використовувати лише класи в одному пакеті.
Часто трапляється те, що я хочу мати корисні методи у суперкласі, якими можуть користуватися всі підкласи. Але для інших класів не має сенсу звертатися до цього методу, і в певному сенсі це порушить інкапсуляцію.
Тому я маю задекларувати ці корисні методи у надкласі publicабо protected, що виставляє їх у всіх інших класах хоча б у пакеті. Хоча вони призначені лише для підкласів.
Чи є причина, чому subclasses-onlyна Java немає модифікатора доступу? Мені це здається дуже дивним. Я щось пропускаю?
Також subclasses-onlyмодифікатор доступу також буде корисний, коли ви хочете виставити змінні лише підкласам. Що зі мною трапляється багато.