这里的错误在哪里?
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
的实例相关联,因此没有实例无法访问它。
您的代码中有两个问题。
你的变量a
是一个实例变量,也就是说,它属于classTestA
上的一个对象。如果没有实例 ot TestA
,您将无法访问它。但是,在您的静态主要方法中,您正在访问它而没有 TestA
的实例
你的超级ClassTestSes
有一个实例变量a
,但是,它不会被继承给你的子class,因为,你的超级 class 变量是私有的。
我发现一个情况让我找各种编码位置的错误。这里我们有两个 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
的实例相关联,因此没有实例无法访问它。
您的代码中有两个问题。
你的变量
a
是一个实例变量,也就是说,它属于classTestA
上的一个对象。如果没有实例 otTestA
,您将无法访问它。但是,在您的静态主要方法中,您正在访问它而没有TestA
的实例
你的超级Class
TestSes
有一个实例变量a
,但是,它不会被继承给你的子class,因为,你的超级 class 变量是私有的。