Джава:Модификатор доступа более строгий, чем «защищенный», менее строгий, чем «частный»?

StackOverflow https://stackoverflow.com/questions/1415412

Вопрос

Я хочу что-то похожее на protected, где только класс, реализующий protected поле и все, что его подклассы, может получить к нему доступ.

Итак, я хочу иметь возможность объявить переменную в базовом классе как private, но при этом иметь возможность доступа к нему из подкласса.

Возможно, это противоречит самой природе создания подклассов. private, и/или protected.

Существует ли что-то подобное в Java?

Это было полезно?

Решение

В Java всего четыре уровня доступа к полям:

  • private
  • частный пакет (по умолчанию;нет модификатора доступа)
  • protected
  • public

protected позволит подклассам, другим классам в том же пакете и членам самого класса получать доступ к protected член.

Короткий ответ: невозможно добиться именно того, чего желаем.

Описание этих четырех модификаторов доступа см. Управление доступом к членам класса от Учебники по Java есть более конкретная информация.

Другие советы

Если вы управляете кодовой базой, вы всегда можете контролировать то, что входит в пакет с базовым классом - если он один в своем пакете, только подклассы могут получить доступ к элементу, который вы хотите сохранить в секрете, кроме подклассов.

Нет, модификатор доступа для сделать именно это. Модификатор protected является наиболее близким, но он предоставляет поле любому классу в том же пакете, а также подклассам (в или из одного пакета).

Не возможно. Вы все еще можете объявить ваши переменные как частные, а затем объявить открытые методы, которые изменяют переменные в суперкласс. Затем вы вызываете открытый метод для переменной.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top