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