Test.javaSustitución de métodos protegidos en 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() { }
}
¿Por qué new B().test()
dará un error? ¿Eso no rompe las reglas de visibilidad?
B.test()
es invisible en Test
porque están en diferentes paquetes, y sin embargo, se niega a llamar a la test()
en B
's superclase que es visible.
Se agradecerían los enlaces a la parte apropiada de JLS.
"dará un error" .. ¿Puede ser más específico? – Jeremy
@Kevin pregunta por qué no puede llamar a un método al que tiene acceso el súper método de. – corsiKa
@Jeremy: se niega a compilar: "a/Test.java: 10: test() tiene acceso protegido en b.B" – CromTheDestroyer