【发布时间】:2017-03-25 05:41:16
【问题描述】:
为什么下面的代码会出现编译错误?
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 类为什么不能访问受保护的变量呢?
【问题讨论】:
-
专利不从子代继承,反之亦然
-
对象是 Java 中的超类,在您的情况下,超类对象不能使用 A 类受保护的数据成员。
-
@Art - 你得到的所有回复都在说同样的事情:父子可见性朝着一个方向发展。这个link 解释了原因。问:有意义吗?
-
Vehicle是Car、Boat、Airplane、OxCart和数百个其他类的父级。Vehicle是否应该知道其所有子类的属性,甚至是那些尚未考虑过的子类(即TimeMachine和Teleporter)?