Что делает ключевое слово static в классе? - PullRequest
421 голосов
/ 05 января 2009

Если быть точным, я пытался этот код:

package hello;

public class Hello {

    Clock clock = new Clock();

    public static void main(String args[]) {
        clock.sayTime();
    }
}

Но это дало ошибку

Невозможно получить доступ к нестатическому полю в статическом методе main

Поэтому я изменил объявление clock на следующее:

static Clock clock = new Clock();

И это сработало. Что значит поставить это ключевое слово перед объявлением? Что именно он будет делать и / или ограничивать с точки зрения того, что можно сделать с этим объектом?

Ответы [ 21 ]

0 голосов
/ 26 октября 2017

При запуске какого-либо проекта сначала загружаются статические вещи (переменные, методы, блоки ..).

При запуске этого проекта основной метод загружается первым. Потому что его static method. Тогда это выглядит объект "a" object. Но объект еще не определен. Потому что это не статично. Тогда приходите, как эта ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...