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 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告