Подтвердить что ты не робот

Почему основной метод в Java должен быть общедоступным?

Почему основной метод в java должен быть общедоступным? Если мы объявим класс основным методом по умолчанию, он выполнит его успешно, но если мы объявим основной метод как значение по умолчанию, JVM будет вызывать ошибку. Зачем? Здесь

class DefaultTest {
    public static void main(String[] args) {
        System.out.println("output.........");
    }
}

Выполняется успешно, но

class DefaultTest {
    static void main(String[] args) {
        System.out.println("output.........");
    }
}

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

4b9b3361

Ответ 1

static, чтобы JVM мог запустить метод без необходимости создания экземпляра объекта класса  + public, чтобы JVM мог свободно обращаться к нему без каких-либо проблем с доступом.

Ответ 2

Он задается спецификацией языка Java, см. http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html главу 12.1.4. Invoke Test.main:

Основной метод должен быть объявлен public, static и void.

Это также требуется спецификацией JVM, см. ответ от @A4L.

Ответ 3

Из jvms

Виртуальная машина Java запускается путем создания начального класса, который указан зависимым от реализации способом, используя загрузчик класса загрузки (раздел 5.3.3). Затем виртуальная машина Java связывает исходный класс, инициализирует его, а вызывает метод public class void main (String []). Вызов этого метода приводит к дальнейшему выполнению. Выполнение инструкций Java Virtual Machine, составляющих основной метод, может привести к связыванию (и, следовательно, созданию) дополнительных классов и интерфейсов, а также вызову дополнительных методов.

Таким образом, он указан таким образом, и поставщики jvm должны его уважать!

Ответ 4

Я думаю, что это просто правило на языке Java.
Технически я не вижу другой причины (потому что даже если он не является публичным, JVM все еще может его найти и назвать).

Ответ 5

Основной метод должен строго следовать его синтаксису; другой мудрый JVM не сможет найти его, и ваша программа не будет работать.

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

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

Ответ 6

Если не используется модификатор (например, public), то может использоваться только класс и пакет. Это означает, что внешний мир не может управлять основным методом. Это, в свою очередь, поэтому вам нужно определить метод с помощью public.

Ответ 7

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

Ответ 8

Доступ к общедоступным классам и методам может получить любой, будь то внутри или вне пакета. Так как jvm iyself имеет загрузчики классов в разных пакетах, чем по умолчанию или ваш пакет, вам нужно поместить основной с модификатором общедоступного доступа

Ответ 9

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