В Java у нас есть четыре спецификатора доступа: public
, protected
, package-private (по умолчанию) и private
. Это wellknown и не проблема для меня.Почему «защищенный» Java менее защищен, чем по умолчанию?
Мой вопрос касается наименования protected
. Как показано в the table here, поле дает спецификатору доступа по умолчанию для private-private препятствует использованию подклассов вне пакета, но применение ключевого слова protected
фактически не защищает его –, наоборот, оно открывает его для подклассов любых пакет.
Итак, почему не protected
защищает вещи; почему это нет ограничительный, чем никакой модификатор?
Он защищен по сравнению с общедоступными ... –
'public',' protected' и 'private' уровни доступа копируются из C++. Пакет private уникален для Java. Я предполагаю, что они использовали те же имена, что и C++, чтобы быть знакомыми и не хотели добавлять синтаксис для уровня пакета. – zch
Вы можете задать тот же вопрос, если были защищены по умолчанию. Я не понимаю, почему это проблема – 75inchpianist