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

Calling a static method on an abstract class outside the 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 方法之外,在 class 里面,然后使用参考 c 我找不到 Calendar 的任何方法 class

我知道 Calendar class 是抽象的,而这个 returns 一个 subclass 的实例要分配给引用,但为什么我不能使用引用来达到主要方法之外的方法?

当您将 Calendar c = Calendar.getInstance(); 移动到主函数之外时,您将在 class Test

中创建非静态变量

要在静态方法中使用这个变量main你需要这样写:

new Test().c.METHOD_NAME

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