Java не позволяет сделать модификатор доступа более ограничительным, поскольку это нарушит правило, согласно которому экземпляр подкласса должен использоваться вместо экземпляра суперкласса. Но когда дело доходит до получения доступа меньше ограничительный ... ну, возможно, суперкласс был написан другим человеком, и они не ожидали, как вы хотите использовать свой класс.
Программы, которые люди пишут, и ситуации, возникающие при программировании, настолько разнообразны, что разработчикам языков лучше не «вторгаться» в то, что программисты могут захотеть сделать с их языком. Если нет веской причины, по которой программист должен не указать, можно сделать ограничения доступа менее ограничительными в подклассе (например), тогда лучше оставить это решение программисту. Они знают специфику своей индивидуальной ситуации, но разработчик языка этого не делает. Поэтому я думаю, что это был хороший вызов дизайнеров Java.
возможно дубликата [модификаторы доступа Явы и преобладающих методов] (http://stackoverflow.com/questions/6851612/java-access-modifiers-and-overriding-methods) –