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