Я знаю, что имя класса public
, объявленного в java-файле, должно совпадать с именем его файла. Но мне интересно, как это не дает мне ошибку компиляции, а работает успешно.Опуская спецификатор доступа в java
class Foo //<-- this can be any name...
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
Я знаю, что по умолчанию используется package private
. Для вышеуказанной программы имя класса и имя файла не должны быть одинаковыми. Он выполняется правильно, а не ошибка компилятора. Может ли кто-нибудь проливать свет? Спасибо.
EDIT:
Теперь я понимаю! Но меня поразил еще один вопрос. Что происходит, когда в одном файле есть два таких класса?
Ну, я думал, что файл .class
будет создан вне класса, который внедрил метод main
. Не было никакой ошибки компиляции, но, к моему удивлению, не было никакого файла .class
. Почему это так?
Храните два класса с открытым доступом в одном файле java. Один с основным и один без основного. Вы получите предупреждение или ошибку. – Rahul
@Rahul: Я не понимаю, как это относится к вопросу. –