2013-04-24 101 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