<分区>
我无法理解 protected 成员的继承和可见性。
我知道它在同一个包和子类中是可见的。
但是在下面的代码中它在子类中是不可见的。
A.java
package a;
public class A {
public static void main(String[] args) {
}
protected void run() {
}
}
B.java
package b;
import a.A;
public class B extends A {
public static void main(String[] args) {
B b = new B();
b.run(); // this works fine
}
}
C.java
package b;
import a.A;
public class C extends A{ // it will not work also if extends B
public static void main(String[] args) {
B b = new B();
b.run(); // this is the problem; not visible
}
}
为什么最后一个类中的b.run()是不可见的?