Проблема Java с защищенным доступом

Почему следующий код получает ошибку компиляции?

public class A
{    
   protected int _i;
   public A(int i)
   {
       _i=i;
   }
   public boolean equals(Object other)
   {
       System.out.print("A ");
       return ((other!=null) && (_i==other._i));
   }
}

Object класс считается родителем Aсуперкласс и подкласс. Так как же Object класс не имеет доступа к защищенным переменным?

2 ответа

Это не проблема модификаторов доступа вообще. Вы получите ту же ошибку даже после того, как объявите int _i как public,

Проблема в том, что дочерний класс может видеть всех членов parent, но родитель не сможет увидеть ни одного члена child. Вот почему other._i является недействительным.

Ты думаешь не в том направлении:(

Подкласс "B" из "A" сможет видеть защищенных членов A.

Суперкласс "Объект" не может.

Смотрите эту ссылку:

В Java, почему метод суперкласса не может получить доступ к защищенным или закрытым методам / переменным из экземпляра подкласса?

Другие вопросы по тегам