请帮助我,我在Java代码中遇到了位问题。我不知道如何纠正这个错误。请帮忙。
public class A {
private int a = 100;
public void setA(int value) {
a = value;
}
public int getA() {
return a;
}
}
public class B extends A {
private int a = 222;
public static void main(String[] args) {
System.out.println("in main(): ");
a = 123;
System.out.println("a = "+super.a );
}
}
我得到的错误是:
类Main中的int a必须是静态
首先,您应该告诉我们错误:(。
看起来您正试图从静态上下文访问非静态上下文中的变量(主方法是静态的(。
你应该做如下的事情:
public class B extends A {
public static void main(String[] args) {
B b = new B();
b.setA(123)
System.out.println("a = " + b.getA());
}
}
在子类中声明另一个"a"变量是没有意义的。如果要直接访问"a",可以将类a中的字段声明为受保护字段。
首先,在编写代码之前要明确的是,您的两个类都是公共的,必须在各自独立的文件中。
现在让我们转到您的代码。错误首先出现在您的主要方法中的以下语句中:
a = 123;
您正在从静态上下文访问B的实例变量a——这是一个。
第二:
System.out.println("a = "+super.a );
A的实例变量A永远不会被B继承,因为它有一个私有访问修饰符。如果你想访问A的A,你可以创建一个A的实例,并用它来调用getA((方法,该方法返回A的值作为
干杯,