来自非静态引用错误的非静态方法.简单的程序



有人能向我解释为什么不允许我做以下事情吗?

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();
    }
}

我收到错误消息"非静态方法calcAverage()无法从first_class.main(first_class.java:17)的静态上下文中引用"。

试试这个:

new first_class().calcAverage();

这样做的目的是首先创建first_class类的一个新实例,然后在该实例上调用calcAverage()方法。现在,您正在对实例上的方法进行引用,而不是试图静态地引用它。

该错误表明您试图从某个静态(main()方法)引用一个没有实例的方法。如果方法被标记为static,但calcAverage()没有被标记为静态,则可以执行此操作,因此需要创建一个实例。

您尚未实例化first_class的实例。

这在你之前的问题中已经讨论过了,我的回答的第一段仍然有效:)(我对Java命名约定的评论也是如此。)

public static void main(String[] args)
{
   first_class f=new first_class();
   f.calcAverage();
}

该方法不是静态的。您必须通过first_class的对象访问它,如上所述。此外,您没有遵循Java命名约定。类名应该是FirstClass,而不是first_class

<小时>

如果您想通过方法的名称访问该方法,您的代码应该如下所示。

package temp;
final class first_class
{
    static int grade1=7;
    static int grade2=4;
    static double average;
    public static  double calcAverage()
    {
        average=(grade1+grade2) / (2);
        System.out.println(average);
        return average;
    }
}
final public class Main
{
    public static void main(String[] args)
    {
       first_class.calcAverage();
    }
}

在类static中生成声明的字段,因为Java中的静态方法只能访问静态成员(字段或方法),并且您可以使用前面片段中提到的静态方法来访问它们。

相关内容

  • 没有找到相关文章

最新更新