Nun, ich muss zugeben, dass ich sehr neu in der Java-Programmierung bin und sehr zögern, die Frage hier zu posten, weil es viele ähnliche Fragen wie meine Frage gibt. Ich habe diese Frage gesehen, aber ich kann immer noch nicht verstehen, was die Logik hinter "protected" Modifikator ist. Daher denke ich, dass es besser ist, meine eigene Frage hier zu stellen.
Hier ist die Klasse A
im Paket PackOne
package PackOne;
public class A {
protected void protectedMethod() {
System.out.println("A's protectedMethod");
}
}
Hier ist die Klasse B
im Paket PackTwo
. Sie ist jedoch eine Unterklasse der Klasse A
.
package PackTwo;
import PackOne.A;
public class B extends A {
public static void main(String[] args) {
//Test 1
protectedMethod(); //error: non-static method protectedMethod()
// cannot be referenced from a static context.
//Test 2
A instanceofA = new A();
instanceofA.protectedMethod();//error: protectedMethod()
//has protected access in PackOne.A
}
public void anotherMethodOfB() {
//Test 3
protectedMethod();//Pass
}
//Test 4
A instanceofA = new A();
instanceofA.protectedMethod();//error: package instanceofA does not existed.
}
Erklären Sie bitte, warum nur der Aufruf der geschützten Methode von Test 3 in der Klasse A
bestanden wird, aber die anderen 3 Tests (1, 2, 4) Fehler ergeben?