Java程式檢查靜態方法對例項變數的可訪問性


靜態方法使用static關鍵字定義,但宣告例項變數時不使用static關鍵字。通常,我們無法透過靜態方法訪問例項變數。

在本文中,我們將建立一個例項變數,然後檢查靜態方法對其的可訪問性。讓我們首先了解靜態方法和例項變數。

例項變數

在程式語言的上下文中,變數是包含任何型別資料的容器的名稱。我們可以說它是一個儲存單元。

宣告變數的語法

Data_Type nameOfvariable = values [optional];

變數可以在宣告時初始化,也可以在程式中需要時初始化。但值必須與宣告時指定的相同資料型別。

例項

String str; 
// only declaration
int price = 59; 
// declaration and initialization
str = “Tutorix”; 
// initialization of ‘str’  

例項變數是變數的一種型別,是非靜態的。它們在類內部但每個方法作用域之外宣告。它們可供屬於其定義所在類的所有方法訪問。它們可以是公共的、私有的、受保護的或預設的。如果我們沒有提及任何訪問說明符,則變數將初始化為預設訪問說明符。

靜態方法

靜態方法使用非訪問修飾符static關鍵字定義。通常,我們透過建立其類的物件來呼叫方法,但靜態方法可以在不使用物件的情況下呼叫。我們僅使用其類名呼叫它們,因為靜態方法屬於類,而不是屬於該類的例項。

呼叫靜態方法

Class_name.static_method_name

例如,內建類Math的大多數成員都是靜態的。我們可以直接使用它們,而無需建立其物件。

示例2

public class Main {
   public static void main( String[] args ) {
      double x = 6.55;
      double y = 4.32;
      System.out.println(" Ceil value of x: " + Math.ceil(x) );
      System.out.println(" Floor value of y: " + Math.floor(y) );
      System.out.println(" Value of PI = " + Math.PI);
   }
}

輸出

Ceil value of x: 7.0
Floor value of y: 4.0
Value of PI = 3.141592653589793

以上示例說明了Math類靜態方法ceil()和floor()的使用。我們可以看到,我們在程式中直接使用了它們,而無需建立Math類的任何物件。

檢查靜態方法對例項變數的可訪問性

我們已經在本文前面提到過,我們無法直接透過靜態方法訪問例項變數,只能透過建立類的例項或物件來訪問它們。

示例

以下程式演示了我們是否可以訪問例項變數透過靜態方法main()。

public class Main {
   public String str = "Tutorialspoint"; 
   public static void main(String []args) {
      System.out.println(" Accessing instance variable " + str);
   }
}

如果我們嘗試執行以上程式碼,我們將得到一個錯誤。

輸出

Main.java:4: error: non-static variable str cannot be referenced from a static context
   System.out.println(" Accessing instance variable " + str);
                                                        ^
1 error

示例

以下程式說明了如何透過靜態方法訪問例項變數。我們將建立Main類的物件'obj',並使用此物件訪問變數'str'。

public class Main {
   public String str = "Tutorialspoint"; 
   public static void main(String []args) {
      Main obj = new Main(); 
      // creating object using new keyword
      // To access the instance variable ‘str’
      System.out.println(" Accessing instance variable: " + obj.str);
   }
}

輸出

Accessing instance variable: Tutorialspoint

結論

在本文中,我們瞭解了例項變數和靜態方法的概念。此外,我們還透過Java程式討論了靜態方法對例項變數的可訪問性。

更新於: 2023年5月2日

110 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告