1
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。但是,它能够访问受保护的方法。这怎么可能?

4

2 回答 2

11

那是因为它们在同一个包中:

修饰符指定该protected成员只能在其自己的包中访问(与 package-private 一样),此外,它的类在另一个包中的子类也可以访问。

链接到文档)。

于 2013-02-18T00:56:50.117 回答
2

请参阅在 Java 中,default、public、protected 和 private 之间的区别

基本上,protected 可以从类、子类和包中访问。这两个类在同一个包中,因此没有错误。

于 2013-02-18T00:58:23.413 回答