为什么以下代码会出现编译错误?
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
类无权访问受保护的变量?
答案 0 :(得分:1)
你正在思考错误的方向:(
Subclass" B" " A"能够看到A的受保护成员。
超类"对象"不能。
请看这个链接:
答案 1 :(得分:1)
这根本不是关于访问修饰符的问题。即使您将int _i
声明为public
,您也会收到同样的错误。
问题是子类能够看到父母的所有成员,但是父母将不能看到任何孩子的成员。这就是other._i
无效的原因。