Вы можете запечатать пакет. Смотрите спецификацию файла JAR.

ьно плохо знаком с Java, но мне интересно, почему доступ к пакетам считается «более ограничительным», чем доступ к подклассам. То есть каждый модификатор доступа, который предоставляет подклассам доступ к члену, также обеспечивает доступ ко всему пакету, и существуют модификаторы, которые обеспечивают доступ к пакету, но не доступ к подклассу.

Разве это не совсем назад? Допустим, у меня есть класс ControlledInstantiation в некотором пакете. Если у меня есть другой класс Кроме того, свойствоControlledInstantiation расширяет ControlledInstantiation, я не могу вызвать конструктор ControlledInstantiation, если я не установил его в защищенный или открытый. И если я установлю его как защищенный, теперь любой другой класс в пакете может создавать его экземпляры так часто, как ему нравится. Таким образом, что-то, что обязано заменить его суперклассом (и, синтаксически, есть), получает тот же или меньший доступ к суперклассу, чем то, что выполняет отдельную, но связанную функцию. Это все равно что сказать своему ребенку, что он не может играть с вашим кошельком, потому что вы не позволите соседям делать это, а затем позволить соседям спать в вашем доме, потому что это делает ваш ребенок.

Наверное, я спрашиваю, что мотивировало это решение и как я могу его обойти?

Ответы на вопрос(2)

Ваш ответ на вопрос