Из подробностей JLS о защищенном доступе:
Пусть C будет классом, в котором объявлен защищенный член. Доступ разрешен только в теле подкласса S класса C.
Кроме того, если Id обозначает поле экземпляра или метод экземпляра, то:
Если доступ осуществляется по квалифицированному имени Q.Id, где Q - ExpressionName, то доступ разрешен тогда и только тогда, когда тип выражения Q - S или подкласс S.
Если доступ осуществляется с помощью выражения доступа к полю E.Id, где E является первичным выражением, или с помощью выражения E.Id вызова метода (...), Где E является первичным выражением, то доступ разрешен тогда и только если тип E - S или подкласс S.
В чем разница между полным именем и выражением доступа к полю?