好吧,我必须承认我对 Java 编程很陌生,并且非常犹豫在这里发布问题,因为有很多问题与我的问题相似。我已经查看了这些问题,但我仍然无法理解“受保护”修饰符背后的逻辑是什么。所以我认为最好在这里发布我自己的问题。
这是A
包中的类PackOne
package PackOne;
public class A {
protected void protectedMethod() {
System.out.println("A's protectedMethod");
}
}
这是B
包中的类PackTwo
。但是,它是 class 的子类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.
}
请解释为什么只有测试 3 对类中受保护方法的调用A
通过,而其他 3 个测试(1,2,4)产生错误?