Ключевое слово static
используется для обозначения поля или метода как принадлежащих самому классу, а не экземпляру. Используя ваш код, если объект Clock
является статическим, все экземпляры класса Hello
будут совместно использовать этот элемент данных (поле) Clock
совместно. Если вы сделаете его нестатичным, каждый отдельный экземпляр Hello
может иметь уникальное поле Clock
.
Проблема в том, что вы добавили метод main в свой класс Hello
, чтобы вы могли запустить код. Проблема здесь заключается в том, что метод main является статическим и поэтому не может ссылаться на нестатические поля или методы внутри него. Вы можете решить это двумя способами:
- Сделайте все поля и методы класса
Hello
статическими, чтобы к ним можно было обращаться из метода main . Это действительно не очень хорошая вещь (или неправильная причина, по которой поле и / или метод становятся статическими)
- Создайте экземпляр вашего класса
Hello
внутри метода main и получите доступ ко всем его полям и методам так, как они были предназначены.
Для вас это означает следующее изменение вашего кода:
package hello;
public class Hello {
private Clock clock = new Clock();
public Clock getClock() {
return clock;
}
public static void main(String args[]) {
Hello hello = new Hello();
hello.getClock().sayTime();
}
}