『壹』 java 內部類如何被外部類調用
服了你了,能把程序寫成這樣。一個java文件里可以有多個類,但只能有一個public類,而且這個類必須是外部類,不能是內部類。而且你在Test里實例化inner的方法也不對,inner的類型始終是Outer.Inner,不會因為Outer實例化而變成outer.Inner,只不過編譯器還沒有報出那裡的錯誤而已。寫成這樣:
class Outer{
private int size=10;
class Inner{
public void doStuff(){
System.out.println(++size);
}
}
}
public class Test{
public static void main(String [] args){
Outer outer=new Outer();
Outer.Inner inner=outer.new Inner();
inner.doStuff();
}
}
『貳』 java外部類怎樣調用內部類方法
你這裡面有兩個錯:
1、Leis內部類是非靜態類,不能在靜態方法里初始化,即第三行Leis x=new Leis();報錯,可以把Leis類改成靜態類,即
public static class Leis{
......
}
2、Leis()是Leis類的構造函數,不能在第4行x.Leis()顯示調用
一句話:靜態方法里不能訪問非靜態內部類。但你可以在外部類的一個成員方法里訪問非靜態內部類,然後你再在靜態方法里初始化外部類,通過外部類來訪問非靜態內部類。