Java是否允许嵌套包?如果是,那么为什么外部类不能私有?私有外部类的范围将在内部包之内,而默认修饰符的范围将在外部包之内?
像
{ // Outer Package
// Scope of default Access Modifier
{ // Inner Package
// Scope of private class
private class Abc{
}
class Bcd{
}
}
}
答案 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,进一步了解类类型和程序包隐私之间的区别。
希望这会有所帮助。