繁体   English   中英

为什么以下Java代码不会产生错误? (访问修饰符)

[英]Why isn't the following java code producing error? (Access Modifiers)

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

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

protected修饰符指定成员只能在其自己的程序包中(与package-private一起)访问,并且只能由其在另一个程序包中的类的子类访问。

链接到文档 )。

请参见在Java中,默认,公共,受保护和私有之间的区别

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM