靜態方法中的非靜態欄位引用
在 Java 中,無法對非靜態欄位或方法進行靜態引用。這是因為,與非靜態欄位和方法不同,靜態元素獨立於類別的實例而存在。
考慮以下程式碼:
public class NonStaticFieldReference { private float r; // Non-static field public static void main(String[] args) { System.out.println(r); // Error! c_area(); // Error! } private static void c_area() { // Cannot reference non-static field r from static method } }
在此範例中, main( ) 方法是靜態的,這表示它無法存取非靜態欄位「r」。同樣,靜態方法 c_area() 無法存取非靜態欄位 'r'。
解決方案
要解決此問題,請建立該類別的實例並透過該實例存取非靜態欄位和方法。
public class NonStaticFieldReference { private float r; // Non-static field public static void main(String[] args) { NonStaticFieldReference instance = new NonStaticFieldReference(); instance.r = 5; instance.c_area(); } private void c_area() { // Access non-static field r from non-static method } }
這樣,透過類別的物件存取非靜態欄位“r”,從而允許正確的欄位引用。
以上是為什麼靜態方法不能存取 Java 中的非靜態欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!