class SomeClass1 {
void method1() { }
public void method2() { }
private void method3() { }
protected void method4() { }
}
class DemoClass{
public static void main(String[] parameters) {
SomeClass1 sc = new SomeClass1();
sc.method1();
sc.method2();
sc.method4();
}
}
受保护的方法只能由继承超类的类访问。正如我们在这里看到的,DemoClass不会扩展SomeClass。但是,它能够访问受保护的方法。这怎么可能?
答案 0 :(得分:11)
那是因为它们在同一个包中:
protected
修饰符指定只能在自己的包中访问该成员(与package-private一样),此外,还可以在另一个包中通过其类的子类访问。
答案 1 :(得分:2)
请参阅In Java, difference between default, public, protected, and private
基本上,可以从类,子类和包访问protected。这两个类在同一个包中,因此没有错误。