这里的错误在哪里?

Where is the mistake here?

我发现一个情况让我找各种编码位置的错误。这里我们有两个 classes

A​​ 类作为超级 class

package TestSes;

public class A {
    private int a = 100;

    public void setA( int value) {
        a = value;
    }
    public int getA() {
        return a;
    }
}

这是子class

package TestSes;

public class TestA extends A {
    private int a = 222;

    public static void main(String[] args) {
        System.out.println("in main(): ");
        System.out.println("a = "+a );
        a = 123;
    }
}

我想知道这里的错误。请我想要一个完整的解释,特别是关于变量 一个。我怎样才能更正此代码以使其正常工作?

您尝试在静态 main 方法中访问非静态变量 a 并为其赋值。那是不可能的。 a 必须与 class TestA 的实例相关联,因此没有实例无法访问它。

您的代码中有两个问题。

  1. 你的变量a是一个实例变量,也就是说,它属于classTestA上的一个对象。如果没有实例 ot TestA,您将无法访问它。但是,在您的静态主要方法中,您正在访问它而没有 TestA

  2. 的实例
  3. 你的超级ClassTestSes有一个实例变量a,但是,它不会被继承给你的子class,因为,你的超级 class 变量是私有的。