静态和非静态上下文的Java继承问题
请帮助我,我在Java代码中面临位问题。 我无法理解如何修复错误。 请帮忙静态和非静态上下文的Java继承问题,java,inheritance,Java,Inheritance,请帮助我,我在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 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必须是静态的
首先,您应该告诉我们错误:) 看起来您正试图从静态上下文(main方法是static)访问非静态上下文中的变量 您应该执行以下操作:
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的A的值
干杯,有什么错误?Main类中的int a必须是静态的