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程式討論了靜態方法對例項變數的可訪問性。
廣告