2014-01-24 3 views
0

Im пытается объявить защищенную переменную внутри защищенного класса, но получаю сообщение об ошибке,proctected переменная внутри защищенного класса

protected class Car { 
    protected int x = 9; 
} 

Допустимый модификатор для класса является публичным, абстрактным и окончательным в соответствии с Eclipse.

Может кто-нибудь объяснить это?

+1

Если 'Car' является классом верхнего уровня, не имеет смысла делать его« защищенным ». «Защищенные» члены класса - это вещи, которые видны этому классу и подклассам. Но класс верхнего уровня не является членом какого-либо другого класса. – ajb

+0

Возможно, это поможет, если вы объясните, что вы думаете о «защищенном классе», и почему вы хотите, чтобы «Автомобиль» был таким. Тогда мы сможем выяснить, чего вы действительно хотите. – ajb

ответ

0

Класс (или интерфейс) не может быть защищен, могут быть только поля и методы внутри класса. Однако существует исключение, если у вас есть вложенные (или внутренние) классы или интерфейсы, вы можете на самом деле пометить их как защищенные. Я предполагаю, что ваш класс является классом верхнего уровня, поэтому, следовательно, вы получаете сообщение об ошибке.

+0

Уточнение: класс, объявленный внутри другого класса (вложенный или внутренний класс) **, может быть защищен. Так может быть вложенный интерфейс. Учебник здесь не совсем точен. – ajb

+0

Правда, я, вероятно, не должен был предполагать, что это не вложенный класс (или интерфейс), я просто искал ссылку для OP и видел, что, поскольку учебники Oracle не объясняют, что вы не можете сделать в этом аспекте , Я обновлю ответ – JNYRanger

Смежные вопросы