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