Test.java
package a;
import b.B;
public class Test {
public static void main(String[] v) {
new A().test();
new B().test();
}
}
A.java:
package a;
public class A {
protected void test() { }
}
B.java:
package b;
public class B extends a.A {
protected void test() { }
}
Почему new B().test()
выдает ошибку? Разве это не нарушает правила видимости?
B.test()
невидим в Test
, потому что они находятся в разных пакетах, и все же он отказывается вызывать test()
в суперклассе B
, который видим.
Будем благодарны за ссылки на соответствующую часть JLS.