在main()方法中不能建立非靜態內部類的例項

2021-06-23 06:06:17 字數 445 閱讀 1058

public class outerclass 

public void foo()

public class innerclass

public static class staticinnerclass

}

1:非靜態內部類,必須有乙個外部類的引用才能建立。

2:在外部類的非靜態方法中,因為有隱含的外部類引用this,所以可以直接建立非靜態內部類。

3:在外部類的靜態方法中,因為沒有this,所以必須先獲得外部類引用,然後建立非靜態內部類。

4:靜態內部類,不需要外部類引用就可以直接建立。

5:同時靜態的內部類,也不能直接訪問外部類的非靜態方法。

6:由此可以推測,非靜態內部類之所以可以直接訪問外部類的方法,是因為建立非靜態內部類時,有乙個隱含的外部類引用被傳遞進來。

在main方法中建立類物件

根據定義包含屬性和方法的類 中長方形類的定義,考慮怎樣在main中建立乙個長方形物件,設定其長度為5,寬度為4,輸出該長方形物件的周長,再修改該長方形物件的寬度為3,輸出該長方形的面積。請自定義乙個類,在該類的main方法中實現上述要求的功能。public class rectangle publi...

靜態方法不能呼叫非靜態方法的原因

1.靜態方法優先於物件被建立 2.非靜態方法通過物件建立 3.靜態方法在記憶體中建立後,還沒有建立物件,所以不能呼叫非靜態方法和變數。null 型別呼叫靜態方法,輸出什麼?public class test public static void main string args 問輸出什麼?輸出是p...

為什麼靜態方法不能呼叫非靜態方法?

1.靜態方法是屬於類的,即靜態方法是隨著類的載入而載入的,在載入類時,程式就會為靜態方法分配記憶體,而非靜態方法是屬於物件的,物件是在類載入之後建立的,也就是說靜態方法先於物件存在。2.當你建立乙個物件時,程式為其在堆中分配記憶體,一般是通過this指標來指向該物件。靜態方法不依賴於物件的呼叫,它是...