Почему основная программа в Java помещается в класс?

Почему основной метод должен быть помещен в класс? Я понимаю основные идеи ООП, но я не могу добраться, почему основная программа определяется в классе. Будет такой класс, который инстанцируют где-нибудь? Я подразумеваю, что вне класса нет никакого кода. Что причина состоит в том, чтобы определить класс и никогда не использовать объекты этого класса?

16
задан MPelletier 8 December 2011 в 10:34
поделиться

9 ответов

Виртуальная машина Java (JVM) должна где-то запускать приложение. Поскольку в Java нет понятия «вещи вне класса», метод, вызываемый JVM, должен быть в классом. И поскольку он статичен, экземпляр этого класса еще не создан.

28
ответ дан 30 November 2019 в 15:30
поделиться

Я знаю, что он уже ответил, но не смог ли вы просто синхронизировать настройки в разработчике настроек, чтобы вернуться к настройкам по умолчанию?

-121--768582-

Когда язык Java был разработан, понятие, которое все должно быть объектом было точкой догматизма. (Хотя они оставили в нескольких примитивных типах). В наши дни вы можете создать язык, который использует закрытие - даже один внешний класс - вместо этого.

3
ответ дан 30 November 2019 в 15:30
поделиться

В то время как это правда, что у Java не имеет концепции методов вне классов, было бы довольно легко позволить разработчикам пропустить всю брошюру на самом деле , написание определение класса И просто позвольте людям писать основную функцию напрямую, если они тоже хотели.

Но обратно, когда люди разрабатывали Java, люди были более догматически к OO, то они сейчас, и что, вероятно, играли большую часть. Подумайте об этом в качестве примера самоуверенного программного обеспечения

. Это имеет одну полезную функцию, хотя, что вы можете основные функции в любой класс и запускать их в качестве программ. Это удобно для тестирования определенных особенностей этих классов, когда вы работаете над ними. Если главное () должен был быть в отдельном файле, а не частью класса, что бы затруднить. Что, если вы хотите больше, то одна главная () функция? Что если вы хотите написать функции, которые будут называться главным за пределами класса? Они пойдут в глобальное пространство имен? Будет несколько основных () функций сталкиваться?

Не похоже, что эти проблемы невозможно решить, но другие, затем немного дополнительные набрав, которые могут быть особенно раздражающими для новичков, текущее решение не так уж плохо, тем более, что IDes сгенерирует основную структуру класса, когда вы создаете новый файл.

14
ответ дан 30 November 2019 в 15:30
поделиться

Попробуйте позвонить Revalidate (); Перекрашивать не то, что вы хотите.

Согласно:

Документы API

Примечание: если компонент был добавлен в Контейнер, который был отображен, проверка должна быть вызвана Контейнер для отображения нового компонент. Если несколько компонентов быть добавленным, вы можете улучшить Эффективность, вызывая только проверку один раз, после того, как все компоненты имеют был добавлен.

Revalidate () в основном является недействительным (), а затем проверяют ().

См. Это Вопрос .....

-121--3432300-

Как сказал @Bombe. Я бы добавил, что к пуристам ОО, тот факт, что класс входа не призван, - это ошибка. Причина в Статическая , главный , мешает кому-либо написать семью основных классов, которые разделяют один и тот же метод Main (), написанный с использованием шаблона метода .

Если бы Java был написан для создания основного класса и вызовет основной способ, пользователи будут наслаждаться преимуществами наследования и интерфейса.

2
ответ дан 30 November 2019 в 15:30
поделиться

Как мы знаем, главное - точка входа для JVM для начала. И в Java ничего нет, кроме классов и интерфейсов. Поэтому мы должны иметь основной метод в классе, который также должен быть публичным классом. И главное всегда должно быть публичным статическим, потому что он должен быть доступен для JVM для начала и статического, потому что он начинается без создания никаких объектов

1
ответ дан 30 November 2019 в 15:30
поделиться

Главная в Java - это статический метод, поэтому класс, который он не должен существовать в объекте, класс просто должен быть загружен.

0
ответ дан 30 November 2019 в 15:30
поделиться

Это упрощает конструкцию виртуальной машины. Поскольку виртуальная машина уже знает, как запустить статический метод класса, то он может относиться к основным методам так же, как и любой другой статический метод.

Если вы поместите основной способ в любой другой конструкции, кроме класса, то ВМ должен быть изменен, чтобы узнать о другом конструкции, осложняющую вещи еще больше.

6
ответ дан 30 November 2019 в 15:30
поделиться

Основная причина в том, что несколько классов могут иметь основной метод. Таким образом, кодовая база может иметь много «точек входа», и он просто использует класс для указания того, какой называется. Кроме того, это входит с дизайном OO, где (почти) все является объектом.

0
ответ дан 30 November 2019 в 15:30
поделиться

Именно так была разработана Java: (почти) все является объектом, а код может существовать только как часть класса.

Поскольку main () является статическим, его вызов не приводит автоматически к созданию экземпляра класса. Однако вполне возможно (и довольно часто, по крайней мере, в небольших программах Swing и апплетах), чтобы класс, содержащий main () , был в остальном нормальным классом, который создается и используется как любой другой класс.

0
ответ дан 30 November 2019 в 15:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: