Да, на то есть веская причина - package-private
скрывает вашу реализацию и связывает реализацию с пакетом, которому принадлежит реализация.
Реализация A::foo()
связана и доступна только из пакета A
, в то время как реализация B:foo
доступна только из пакета B
.
То, что вы просите, можно транспонировать, если бы мы могли позволить любой частной реализации пакета быть доступной из пакетов каждого суперучебный класс;но это действительно увеличивает объем пакета private.Не говоря уже о том, что, поскольку все ваши классы наследуются от java.lang.Object, каждый закрытый метод пакета всегда будет доступен из пакета java.lang
, что не имеет особого смысла!