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程序讨论了静态方法对实例变量的可访问性。
广告