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.