我发现一种情况要求我在各种编码位置发现错误。这里我们有两个班级
作为超类
的A类package TestSes;
public class A {
private int a = 100;
public void setA( int value) {
a = value;
}
public int getA() {
return a;
}
}
这就是它的子类
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;
}
}
我想知道这里的错误。请特别关于变量的完整解释 一个。如何更正此代码才能使其正常工作?
答案 0 :(得分:4)
您尝试访问并为静态main方法中的非静态变量a
赋值。那是不可能的。 a
必须与类TestA
的实例相关联,因此在没有实例的情况下无法访问它。
答案 1 :(得分:0)
您的代码中有两个问题。
您的变量a
是一个实例变量,意味着它属于类TestA
上的一个对象。如果没有TestA
实例,您无法访问它。但是,在您的静态main方法中,您正在访问它而没有TestA
您的超类TestSes
有一个实例变量a
,但它不会被继承到您的子类,因为您的超类变量是私有的。