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