Джава:Модификатор доступа более строгий, чем «защищенный», менее строгий, чем «частный»?
-
06-07-2019 - |
Вопрос
Я хочу что-то похожее на protected
, где только класс, реализующий protected
поле и все, что его подклассы, может получить к нему доступ.
Итак, я хочу иметь возможность объявить переменную в базовом классе как private
, но при этом иметь возможность доступа к нему из подкласса.
Возможно, это противоречит самой природе создания подклассов. private
, и/или protected
.
Существует ли что-то подобное в Java?
Решение
В Java всего четыре уровня доступа к полям:
private
- частный пакет (по умолчанию;нет модификатора доступа)
protected
public
protected
позволит подклассам, другим классам в том же пакете и членам самого класса получать доступ к protected
член.
Короткий ответ: невозможно добиться именно того, чего желаем.
Описание этих четырех модификаторов доступа см. Управление доступом к членам класса от Учебники по Java есть более конкретная информация.
Другие советы
Если вы управляете кодовой базой, вы всегда можете контролировать то, что входит в пакет с базовым классом - если он один в своем пакете, только подклассы могут получить доступ к элементу, который вы хотите сохранить в секрете, кроме подклассов.
Нет, модификатор доступа для сделать именно это. Модификатор protected
является наиболее близким, но он предоставляет поле любому классу в том же пакете, а также подклассам (в или из одного пакета).
Не возможно. Вы все еще можете объявить ваши переменные как частные, а затем объявить открытые методы, которые изменяют переменные в суперкласс. Затем вы вызываете открытый метод для переменной. Р>