Чтобы быть более конкретным, вы ожидаете, что protected
будет работать так же, как в C ++.
Однако в Java это имеет другое значение. В Java защищенный метод доступен классу (очевидно), всем остальным классам в том же пакете и любым подклассам этого класса. Классы в других пакетах не будут иметь доступа, если они не наследуют этот исходный класс.
См. Аналогичный вопрос для получения более подробной информации о маркерах наследования.
Лично я почти никогда не пользуюсь protected
. Я разрабатываю приложения, а не фреймворки, поэтому я с большей вероятностью определяю public
методы, private
данные и довольно часто отмечаю весь свой класс как final
.