这是一份关于IT技术的翻译内容。以下是需要翻译的文本:
这是一个例子,来自 Java程序员认证指南——第三版——Khalid A. Mughal Rolf W. Rasmussen,我无法理解。
我知道如果我们没有将受保护成员(protected member)继承到另一个包中定义的子类中,就无法访问它。
但我仍然不明白为什么我们不能从子类的子类中访问它。
以下是例子:
A.java
package packageA;
public class A {
protected int z;
}
B.java
package packageB;
import packageA.A;
public class B extends A {
void action(A obj1, B obj2, C obj3) {
z = 10; // z in B - Works
obj1.z = 10; // Won't work for obvious reason
obj2.z = 10; // z in B - Works
obj3.z = 10; // z in C - Works
}
}
class C extends B {
void action(A obj1, B obj2) {
z = 10; // Works
obj1.z = 10; // Won't work for obvious reason
obj2.z = 10; // z in B - WHY DOESN'T THIS WORK?????
}
}