Назначение статических методов в 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 существует Нет переменных экземпляра, а его конструктор является закрытым. Таким образом, статическая работа отлично...