受保护的访问java问题

时间:2017-03-25 05:41:16

标签: java protected

为什么以下代码会出现编译错误?

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 个答案:

答案 0 :(得分:1)

你正在思考错误的方向:(

Subclass" B" " A"能够看到A的受保护成员。

超类"对象"不能。

请看这个链接:

In Java, why super-class method can't access protected or private methods/variables from sub-class instance?

答案 1 :(得分:1)

这根本不是关于访问修饰符的问题。即使您将int _i声明为public,您也会收到同样的错误。

问题是子类能够看到父母的所有成员,但是父母将不能看到任何孩子的成员。这就是other._i无效的原因。