Проблема 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.
Суперкласс "Объект" не может.
Смотрите эту ссылку: