Назначение статических методов в java
Я запутался в использовании статических методов в java, например, имеет смысл, если метод main
является статическим, но при кодировании мы получили объекты, например
JFrame frame= new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// here why not frame.EXIT_ON_CLOSE
и таким же образом, когда мы используем
GridBagConstraints c= new GridBagConstraints();// we have an object but still
c.anchor = GridBagConstraints.PAGE_END;
может ли кто-нибудь объяснить мне, есть ли какие-то особые причины для этого?
Ответы
Ответ 1
Статические методы и поля относятся ко всем объектам класса, в отличие от нестатических, которые относятся к определенному экземпляру класса. В вашем примере, независимо от того, сколько объектов JFrame frame
вы создадите, доступ к frame.EXIT_ON_CLOSE
приведет к тому же точному результату. Чтобы явно указать этот факт, используются члены static
(также известные как "члены класса" ).
Такая же логика применяется к статическим методам: если метод не обращается к переменным экземпляра, его результат становится независимым от состояния вашего объекта. Метод main(String[] args)
является одним из таких примеров. Другие распространенные примеры включают различные методы factory, методы разбора примитивов и т.д. Эти методы не работают на экземпляре, поэтому они объявляются статическими.
Ответ 2
JFrame.EXIT_ON_CLOSE
не является методом. Это статическое поле. Смотрите doc.
Если вам не нужны некоторые функции, связанные с классом not object, вы можете использовать статический метод.
Ответ 3
- JFrame.EXIT_ON_CLOSE
- статическая переменная (поле) не метод в классе JFrame
.
- static
методы являются методами класса, например, в классе Math существует Нет переменных экземпляра, а его конструктор является закрытым. Таким образом, статическая работа отлично...