//编辑:I猜猜我把问题说错了。我熟悉"我们需要一个实例来访问非静态变量和方法"的概念。
但我的问题是
当我在日食中键入 prgm 时,它在 B 行显示错误,但我希望即使在 A//上显示
这是一个基本问题,请不要介意。
package com.sigma.java;
import java.util.*;
public class Test1 {
private int a=1;
public void add(){
System.out.println(a);-------->A
}
public static void main(String[] args) {
Test1 t=new Test1();
System.out.println(a);-------------->B
}
}
编译器在尝试打印 a 时在 main 方法中显示错误(标记为 B((错误 - 无法对非静态字段 a进行静态引用(问题-为什么我在add((方法(标记为A(
变量a必须像波纹管一样声明为静态:
private static int a = 1 ;
不能在静态 Java 方法中使用实例变量。
您的主要方法应该是:
Becuause,a
是一个实例变量,您需要像在静态方法中使用实例t
一样使用实例变量。
public static void main(String[] args) {
Test1 t=new Test1();
System.out.println(t.a);
}
在add
方法中,它是可访问的,因为它是成员方法,其中可以访问所有成员变量目录。因此,它是有效的,没有错误。
仅当您有权访问类 Test1 的实例时,才能调用 add 方法。类 Test1 的每个实例都有一个变量 a 的副本。
但是,您尝试从main方法直接/静态访问字符串a的值。这是有问题的,因为来自 main 方法的调用不是来自 Test1 的实例。要记住的关键点是实例变量 a 绑定了类 Test1 的每个实例