Вызов статического метода для абстрактного класса вне основного метода

Эта программа работает без проблем

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

Вне основного метода и внутри класса используйте ссылку c Я не могу найти метод класса календаря

Я понимаю, что класс Calendar является абстрактным, и это возвращает экземпляр подкласса для назначения ссылки, но почему я не могу использовать ссылку для доступа к методам вне метода main?

1 ответ

Решение

Когда вы двигаетесь Calendar c = Calendar.getInstance(); вне основной функции вы создаете НЕ статическую переменную в классе Test

использовать эту переменную в статическом методе main вам нужно написать что-то вроде этого:

new Test().c.METHOD_NAME

Другой вариант - добавить static к объявлению переменной, то вы сможете использовать ее в основном напрямую

Другие вопросы по тегам