classtest }).start(); system.out.println("aaaaaa"); } classa } }
靜態方法中不能new內部類的例項物件。這是為什麼了?內部類的最重要的乙個特點就是它可以直接訪問它外部類的成員變數。成員變數是物件身上的。物件建立完成了,才會為成員變數分配空間。能呼叫成員變數,意味著一定有了例項物件.
main方法是靜態的,它執行的時候可以不用建立那個物件。這就矛盾了。
main方法執行的時候沒有任何外部類的例項物件。我們的內部類的例項物件建立了它又可以訪問外部類的成員變數,外部類的例項物件在哪兒了?
所以這個原因,我們下面的**就要進行改寫
要想建立內部類的例項物件,必須建立外部類的例項物件。
//修改之後的**如下:classtest public voidinit() }).start(); } classa } }
方法的呼叫一定是要通過物件呼叫的。哪個物件呼叫了這個方法,建立內部類例項物件的時候所使用的外部類的例項物件就是誰
靜態方法中不能new內部類的例項物件的總結
原文 class test start system.out.println aaaaaa class a 靜態方法中不能new內部類的例項物件。這是為什麼了?內部類的最重要的乙個特點就是它可以直接訪問它外部類的成員變數。成員變數是 物件身上的。物件建立完成了,才會為成員變數分配空間。能呼叫成員變數...
靜態方法中不能new內部類的例項物件的總結
class test start system.out.println aaaaaa class a 靜態方法中不能new內部類的例項物件。這是為什麼了?內部類的最重要的乙個特點就是它可以直接訪問它外部類的成員變數。成員變數是物件身上的。物件建立完成了,才會為成員變數分配空間。能呼叫成員變數,意味著...
在main()方法中不能建立非靜態內部類的例項
public class outerclass public void foo public class innerclass public static class staticinnerclass 1 非靜態內部類,必須有乙個外部類的引用才能建立。2 在外部類的非靜態方法中,因為有隱含的外部類引...