private
означает «виден только внутри класса включения».
protected
означает «виден только внутри класса включения и любых подклассов, а также в любом месте в пакете класса включения».
private
, следовательно, не имеет смысла применительно к классу верхнего уровня;то же самое относится и к первой части определения protected
.Вторая часть protected
может применяться , но на нее распространяется модификатор по умолчанию (с защитой пакета), поэтому protected
является бессмысленным и частично избыточным.
Оба private
и protected
могут применяться (и часто применяются) к вложенным классам и интерфейсам, но не к классам и интерфейсам верхнего уровня.