在 Java 中重写受保护的方法
2022-09-04 07:38:13
测试.java
package a;
import b.B;
public class Test {
public static void main(String[] v) {
new A().test();
new B().test();
}
}
答.java:
package a;
public class A {
protected void test() { }
}
乙.java:
package b;
public class B extends a.A {
protected void test() { }
}
为什么给出错误?这难道不会违反可见性规则吗?new B().test()
B.test()
是看不见的,因为它们在不同的包中,但它拒绝调用 in 的超类,这是可见的。Test
test()
B
如能提供与JLS适当部分的链接,将不胜感激。