Ответ 1
Это потому, что оба находятся в одном пакете (папке). Они автоматически импортируются без необходимости писать инструкцию импорта для этого.
В настоящее время я изучаю Java, используя книгу Deitel Java. Как программировать 8-е издание (версия ранних объектов).
Я нахожусь в главе о создании классов и методов.
Тем не менее, я действительно смутился приведенным здесь примером, потому что он состоит из двух отдельных файлов .java, и когда один из них использует метод из другого, он не импортировал класс. Он просто создал объект этого класса из другого .java файла, не импортируя его в первую очередь.
Как это работает? Почему мне не нужно импортировать его?
Вот код из книги (я удалил большинство комментариев, чтобы сохранить печатающее пространство/время...): .java класс:
//GradeBook.java
public class GradeBook
{
public void displayMessage()
{
System.out.printf( "Welcome to the grade book!" );
}
}
Основной файл .java:
//GradeBookTest.java
public class GradeBookTest
{
public static void main( String[] args)
{
GradeBook myGradeBook = new GradeBook();
myGradeBook.displayMessage();
}
}
Я думал, что должен написать
import GradeBook.java;
или что-то в этом роде. Как компилятор знает, где находится класс GradeBook и его методы, и как он узнает, существует ли он вообще, если мы не импортируем этот класс?
Я сделал много Googling, но не нашел ответа. Я новичок в программировании, поэтому, пожалуйста, переносите мой вопрос с новичком.
Спасибо заранее.
Это потому, что оба находятся в одном пакете (папке). Они автоматически импортируются без необходимости писать инструкцию импорта для этого.
Вам не нужно импортировать классы, которые находятся в том же пакете, что и текущий класс.
Также обратите внимание, что GradeBook.java - это имя файла. (Простое) название класса - GradeBook. Каждый класс должен быть в пакете. Если он находится в пакете com.foo.bar, имя класса - com.foo.bar.GradeBook, и это имя, которое вы должны использовать при импорте этого класса.
Прочтите http://download.oracle.com/javase/tutorial/java/package/packages.html, чтобы узнать больше о пакетах.
Классы, расположенные в одном пакете, не обязательно импортируются, поскольку они видны друг другу. Вы просто import
класс, который находится в другом пакете:
import java.util.ArrayList;
Обратите внимание, что вы не импортируете файл, а класс.
Все о пакетах. Вы пытаетесь использовать класс из пакета по умолчанию, который не требует явного импорта java файла, то есть GradeBook внутри GradeBookTest
Здесь вы можете начать с изучения пакетов:
и:
Java не использует, как это делает C. Вместо этого java использует концепцию, называемую classpath, список ресурсов, содержащих классы Java. JVM может получить доступ к любому классу в пути к классам по имени, поэтому, если вы можете расширять классы и ссылаться на типы, просто объявляя их.
Вам не нужно импортировать классы, которые находятся в одном пакете.
Ну, классы в том же пакете автоматически импортируются.
Импорт предназначен для импорта классов, которые находятся в другом пакете. Поскольку вы не объявили пакет, либо оба они помещаются в пакет по умолчанию. Компилятор может найти его, потому что класс живет в одном каталоге.
Они находятся в одном пакете. Этот tutorial будет делать больше справедливости, чем я.