Java嵌套程序包

时间:2018-10-12 15:28:16

标签: java package

Java是否允许嵌套包?如果是,那么为什么外部类不能私有?私有外部类的范围将在内部包之内,而默认修饰符的范围将在外部包之内?

{ // Outer Package

// Scope of default Access Modifier


    {  // Inner Package

       // Scope of private class

        private class Abc{



        }


        class Bcd{

        }

    }

}

2 个答案:

答案 0 :(得分:1)

根据the doc,不可能:

  

package语句(例如,包图形;)必须是源文件中的第一行。每个源文件中只能有一个package语句,它适用于文件中的所有类型。

答案 1 :(得分:1)

Java中不存在任何嵌套包。

但是,在这种情况下,程序包中将存在一个类,这样程序包路径将如下所示:
com.foo.Bar

然后在其下可能存在其他软件包目录,以便另一个类的软件包路径如下所示:
com.foo.boo.Lou

Oracle的文档here's a link很好地概述了类的访问控制。

This one here解释了何时使用嵌套类,我认为这将为您提供更好的解释,下面将对此进行引用:

  

如果您的要求与本地课程的要求相似,请使用它   想要使该类型更广泛地可用,而您不需要   访问局部变量或方法参数。

     
      
  • 如果需要访问封闭实例的非公共字段和方法,请使用非静态嵌套类(或内部类)。   如果您不需要此访问,请使用静态嵌套类。
  •   

还有Here's a supplemental link,进一步了解类类型和程序包隐私之间的区别。

希望这会有所帮助。