在main方法之外的抽象类上调用静态方法

时间:2017-05-18 17:41:33

标签: java main-method

此程序无问题

public class Test{
static int DAY_IM = 1000*60*60*24;

public static void main(String[] args) {

    Calendar c = Calendar.getInstance();
    c.set(2004,0,7,15,40);
    long day1 = c.getTimeInMillis();

    for (int i  =0; i < 15 ; i++) {

        day1 += (DAY_IM *29.52);
        c.setTimeInMillis(day1);

        out.println(String.format("full moon on %tc ",c));
    }

}

我想了解为什么当我移动这一行时

 Calendar c = Calendar.getInstance();

在main方法之外,然后在类中使用引用c我无法找到Calendar类的任何方法

我理解Calendar类是抽象的,它返回一个子类的实例来分配给引用,但是为什么我不能使用引用来访问main方法之外的方法呢?

1 个答案:

答案 0 :(得分:1)

当您将Calendar c = Calendar.getInstance();移到main函数之外时,您正在类Test中创建NON静态变量

要在静态方法main中使用此变量,您需要编写如下内容:

new Test().c.METHOD_NAME

另一种选择是将static添加到变量声明中,然后您就可以直接在main中使用它了