谁能给我解释一下,为什么我不能做以下事情?
public class first_class {
int grade1=7;
int grade2=4;
double average;
public double calcAverage() {
average=(grade1+grade2) / (2);
System.out.println(average);
return average;
}
public static void main(String []args) {
first_class.calcAverage();
}
}
我收到错误消息“无法从 first_class.main(first_class.java:17) 的静态上下文中引用非静态方法 calcAverage()”。
最佳答案
试试这个:
new first_class().calcAverage();
它所做的是首先创建您的 first_class 类的新实例,然后对该实例调用 calcAverage()
方法。现在,您正在引用实例上的方法,而不是尝试静态引用它。
该错误表明您试图从一些静态的东西(main() 方法)中引用一个没有实例的方法。如果该方法标记为静态,您可以执行此操作,但您的 calcAverage() 未标记为静态,因此您需要创建一个实例。
关于java - 来自非静态引用错误的非静态方法。简单程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8721101/