我目前正在使用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类及其方法的位置以及如果我们不导入该类,它如何知道它是否存在?
我做了很多谷歌搜索,但没有找到答案。 我是编程的新手,所以请容忍我的新手问题。
提前谢谢。
答案 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可以按名称访问类路径上的任何类,因此如果您可以通过声明它们来扩展类并引用类型。
答案 4 :(得分:1)
不必导入位于同一包中的类,因为它们彼此可见。您只需import
另一个包中的类:
import java.util.ArrayList;
请注意,您不是要导入文件,而是导入类。
答案 5 :(得分:1)
导入用于导入不同包中的类。由于您没有声明包,因此它们都放在默认包中。编译器可以找到它,因为该类位于同一目录中。
答案 6 :(得分:0)
您不必导入同一包中的类。
答案 7 :(得分:0)
嗯,同一包中的类会自动导入。
答案 8 :(得分:0)
他们在同一个包装中。这tutorial将比我更公正。