Überschreiben protected-Methoden in Java

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() { }
}

Warum new B().test() eine Fehlermeldung zu geben? Nicht, dass die break-visibility-Regeln?

B.test() ist unsichtbar in Test weil Sie in verschiedenen Paketen, und doch ist es nicht zu nennen, die test() im B's Superklasse, das sichtbar ist.

Links zu den entsprechenden Teil der JLS würde geschätzt.

InformationsquelleAutor der Frage CromTheDestroyer | 2011-04-12

Schreibe einen Kommentar