为什么我不必导入刚在主类中使用的类? Java

问题描述

| 我目前正在使用Deitel的书Java How to Program第8版(早期对象版本)学习Java。 我在有关创建类和方法的章节中。 但是,我对那里提供的示例感到非常困惑,因为它包含两个单独的.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类及其方法,以及如何知道它是否存在? 我做了很多谷歌搜索,但没有找到答案。 我是编程新手,所以请容忍我的新手问题。 先感谢您。     

解决方法

        这是因为两者都在同一包(文件夹)中。它们是自动导入的,无需为此编写import语句。     ,        您不必导入与当前类位于同一包中的类。 另外,请注意GradeBook.java是文件的名称。该类的(简单)名称是GradeBook。每个类都应该放在一个包中。如果它在com.foo.bar包中,则类名称为com.foo.bar.GradeBook,这是导入此类时必须使用的名称。 阅读http://download.oracle.com/javase/tutorial/java/package/packages.html,以了解有关软件包的更多信息。     ,        Java不使用包含C的方式。取而代之的是,java使用一种称为类路径的概念,即包含Java类的资源列表。 JVM可以按名称访问类路径上的任何类,因此,如果可以扩展类并仅通过声明它们来引用类型,则JVM即可。 来自:在另一个Java文件中包含一个Java文件     ,        这一切都与包裹有关。您正在尝试使用默认包中的类,该类不需要显式导入Java文件,即GradeBookTest中的GradeBook 您可以从这里开始学习软件包: Java包教程 和: 创建和使用包     ,        不必导入位于同一包中的类,因为它们彼此可见。您只需“ 3”一个在另一个包中的类:
import java.util.ArrayList;
请注意,您不是在导入文件,而是在导入类。     ,        导入用于导入其他程序包中的类。由于您都没有声明包,因此它们都被放入默认包中。编译器可以找到它,因为该类位于同一目录中。     ,        您不必导入同一包中的类。     ,        好吧,同一包中的类会自动导入。     ,        它们在同一包中。本教程将比我做的更多。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...