为什么我不必导入我刚刚在我的主类中使用它的类? (JAVA)

时间:2011-05-27 12:48:57

标签: java class import

我目前正在使用Deitel的书籍Java How to Program 8th edition(早期对象版本)学习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类及其方法的位置以及如果我们不导入该类,它如何知道它是否存在?

我做了很多谷歌搜索,但没有找到答案。 我是编程的新手,所以请容忍我的新手问题。

提前谢谢。

9 个答案:

答案 0 :(得分:31)

这是因为两者都在同一个包(文件夹)中。它们是自动导入的,无需为此编写import语句。

答案 1 :(得分:6)

您不必导入与当前类位于同一包中的类。

另请注意,GradeBook.java是文件的名称。该类的(简单)名称是GradeBook。每个班级都应该在一个包中。如果它在com.foo.bar包中,则类名为com.foo.bar.GradeBook,这是导入此类时必须使用的名称。

阅读http://download.oracle.com/javase/tutorial/java/package/packages.html以了解有关套餐的更多信息。

答案 2 :(得分:2)

这都是关于包裹的。您正在尝试使用默认包中的类,该类不需要显式导入java文件,即GradeBookTest中的GradeBook

您可以从这里开始学习软件包:

<强> Java Package Tutorial

和:

<强> Creating and Using Packages

答案 3 :(得分:2)

Java不使用包含C的方式。相反,java使用一个名为classpath的概念,这是一个包含java类的资源列表。 JVM可以按名称访问类路径上的任何类,因此如果您可以通过声明它们来扩展类并引用类型。

来自:Include one java file in another java file

答案 4 :(得分:1)

不必导入位于同一包中的类,因为它们彼此可见。您只需import另一个包中的类:

import java.util.ArrayList;

请注意,您不是要导入文件,而是导入类。

答案 5 :(得分:1)

导入用于导入不同包中的类。由于您没有声明包,因此它们都放在默认包中。编译器可以找到它,因为该类位于同一目录中。

答案 6 :(得分:0)

您不必导入同一包中的类。

答案 7 :(得分:0)

嗯,同一包中的类会自动导入。

答案 8 :(得分:0)

他们在同一个包装中。这tutorial将比我更公正。