【发布时间】:2011-10-16 06:31:56
【问题描述】:
这是 A Programmer's Guide to Java™ SCJP Certification A Comprehensive Primer - Third Edition - Khalid A. Mughal Rolf W. Rasmussen 中的一个示例明白。
我知道如果我们不将受保护的成员继承到另一个包中定义的子类中,我们将无法访问它。
但是我还是不明白为什么我们不能从子类的子类中访问它。
示例如下
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?????
}
}
【问题讨论】:
-
这是一个学术练习还是你真的想写这样的代码?
-
@jiggy 这是Java™ SCJP 认证程序员指南综合入门第三版 Khalid A. Mughal Rolf W. Rasmussen 中的一个示例,我无法理解。
-
我当然希望作者不要使用诸如“A”、“B”之类的类名来给出示例。如果他们这样做的话就不是很直观!