【发布时间】:2012-10-01 22:29:48
【问题描述】:
我已经开始学习用于 Android 应用程序开发的 Java 语言。
根据我对静态类的理解,我们无法实例化静态类的对象。
但是为什么在下面的情况下允许实例化静态嵌套类对象呢?
class EnclosingClass
{
//...
class static StaticInnerClass
{
//...
}
}
如果标记为静态,为什么我们可以创建内部类的对象?
EnclosingClass.StaticInnerClass s = new EnclosingClass.StaticInnerClass()
【问题讨论】:
-
这是来自文档的一个很好的引用:“嵌套类分为两类:静态和非静态。声明为静态的嵌套类简称为静态嵌套类。非静态嵌套类称为内部类。” (Link)。如果你向下滚动,他们会解释它们的用法。
-
@ParagMeshram 你对你的赏金有什么期望? Jon Skeet 的回答不清楚吗?
-
来自文档 (docs.oracle.com/javase/tutorial/java/javaOO/nested.html) 的另一个清晰而有用的引述是:“实际上,静态嵌套类在行为上是一个顶级类,它嵌套在另一个顶级类中包装方便。”
标签: java oop inner-classes nested-class