Почему Java и C # размещают главную функцию внутри класса?

1

Я не понимаю, в чем смысл размещения main функции внутри класса! Разве они могут сказать, что Java и С# полностью объектно ориентированы?

  • 5
    В обоих языках все методы являются частью типа. В main нет ничего особенного.
  • 0
    Я думаю, вы ошиблись. Именно потому, что они являются ОО-языками, main функция находится в классе.
Показать ещё 1 комментарий
Теги:
oop

4 ответа

3
Лучший ответ

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

3

static методы не являются ООП, поэтому это будет иметь мало смысла.

Java требует, чтобы весь код находился внутри класса, то есть внутри файла класса. Если вы этого не сделаете, вам придется поместить его куда-нибудь, и вы не выиграете, сделав исключение для main. Лучше держать вещи просто.

Я не понимаю, в чем смысл размещения основной функции внутри класса!

Вместо того, чтобы спрашивать "Почему бы не сделать что-то", лучше спросить "Зачем что-то", и если нет веской причины, часто лучше не делать этого.

0

Ответ за основной частью класса лежит в разделе "Процессы и темы".

Прочитайте Oracle Processes and Threads, чтобы лучше понять тему.

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

  • 1
    Я думаю, что вы неправильно поняли вопрос. Это не о потоках .. это о точках входа.
  • 0
    Хм, я думал, что определение main внутри класса явно говорит классу запускать свой код в main thread.
Показать ещё 1 комментарий
0

Эти оба языка были созданы с учетом объектной ориентации без какого-либо багажа обратной совместимости (в отличие от c++, например, который также считается объектно-ориентированным, но его обратная совместимость с c принуждает его разрешить концепцию свободных методов, определенных методов вне любого класса), и это имя подразумевает, что весь строительный блок основан на объекте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню