關于實例中創建非靜態內部類對象的問題
示例代碼中創建非靜態內部類的對象是這樣創建的
Outer?o=new?Outer(); Inner?i=o.new?Inner();
這里怎么能夠直接使用Inner i聲明,難道不應該是
Outer?o=new?Outer(); o.Inner?i=o.new?Inner();
這樣才對嗎?main是一個靜態方法怎么能夠直接訪問非靜態成員內部類?
示例代碼中創建非靜態內部類的對象是這樣創建的
Outer?o=new?Outer(); Inner?i=o.new?Inner();
這里怎么能夠直接使用Inner i聲明,難道不應該是
Outer?o=new?Outer(); o.Inner?i=o.new?Inner();
這樣才對嗎?main是一個靜態方法怎么能夠直接訪問非靜態成員內部類?
2015-11-23
舉報
2015-11-23
因為是在本類的main方法中創建的內部類對象所以示例中省略了一點東西 有點誤導性
如果是單獨開個測試類中來創建非靜態的內部類的對象應該是這樣
Outer o=new Outer();
Outer.Inner in=o.new Inner();
也可以結合起來直接這樣寫
Outer.Inner in = new Outer().new Inner();
單獨說一下 這里這樣寫Outer.Inner in=o.new Inner();用的Outer.Inner 而不是o.Inner的原因是內部類其實也是一個類文件 只不過內部類的文件名 其實是外部類.內部類.class
所以你在創建他對象的時候得寫出他的類名全稱即Outer.Inner