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程序讨论了静态方法对实例变量的可访问性。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP