2013-04-24 61 views
1
class OuterClass { 
    static class StaticNestedClass {} 
} 

上面的StaticNestedClass通过以下语法实例化。实例化静态嵌套类而不限定类包含

OuterClass.StaticNestedClass nestedObject = 
         new OuterClass.StaticNestedClass(); 

这是很容易理解,但我的问题是,同样的嵌套类是由下面的代码实例化,而无需使用外部类

StaticNestedClass nestedObject = 
         new StaticNestedClass(); 

请解释为什么它不需要在OuterClass'资格,还是把编译 谢谢

+3

它在哪里实例化没有OuterClass限定? – 2013-04-24 17:03:20

+0

@Rob Watts先生,我在一个java文件中创建了一个类OuterClass和它的嵌套类,然后在同一个包中创建了一个新类,在该类中实例化了Outerclass的嵌套类。谢谢先生... – user961690 2013-04-24 17:23:11

回答

3

这一切都取决于代码及(如适用)import语句是什么。 OuterClass中的任何代码自动知道OuterClass的成员,包括任何嵌套类(静态或非静态)。在其他类

代码也可以使用非限定StaticNestedClass标识类是否进口:

import OuterClass.StaticNestedClass; 

public class Elsewhere { 
    StaticNestedClass nested = new StaticNestedClass(); 
    . . . 
} 

没有import,在Elsewhere类代码需要使用合格的类名OuterClass.StaticNestedClass

+0

百感谢您的即时答复,先生... 谢谢吨... – user961690 2013-04-24 17:25:24

1

嵌套类分为两类:静态和非静态。被声明为静态的嵌套类简单地称为静态嵌套类。非静态嵌套类称为内部类。

静态嵌套类使用封闭的类名访问:

+0

谢谢Achintya ... – user961690 2013-04-24 17:24:15