为啥我不必导入我刚刚制作的类以在我的主类中使用它? (爪哇)
Posted
技术标签:
【中文标题】为啥我不必导入我刚刚制作的类以在我的主类中使用它? (爪哇)【英文标题】:Why don't I have to import a class I just made to use it in my main class? (Java)为什么我不必导入我刚刚制作的类以在我的主类中使用它? (爪哇) 【发布时间】:2011-09-03 09:24:42 【问题描述】:我目前正在使用 Deitel 的 Java How to Program 第 8 版(早期对象版本)一书学习 Java。
我正在讨论创建类和方法的章节。
但是,我对那里提供的示例感到非常困惑,因为它由两个单独的 .java 文件组成,当其中一个使用另一个方法时,它没有导入类。它只是从另一个 .java 文件创建了该类的一个对象,而没有先导入它。
它是如何工作的?为什么我不需要导入它?
这是书中的代码(我删除了大多数 cmets,以节省打字空间/时间......): .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 类及其方法在哪里找到?如果我们不导入该类,它又如何知道它是否存在?
我做了很多谷歌搜索,但没有找到答案。 我是编程新手,所以请容忍我的新手问题。
提前谢谢你。
【问题讨论】:
【参考方案1】:您不必导入与当前类在同一个包中的类。
另外,请注意 GradeBook.java 是文件的名称。类的(简单)名称是 GradeBook。每个类都应该在一个包中。如果在com.foo.bar包中,类名是com.foo.bar.GradeBook,这个是你在导入这个类时必须使用的名字。
阅读http://download.oracle.com/javase/tutorial/java/package/packages.html 以了解有关软件包的更多信息。
【讨论】:
【参考方案2】:这是因为两者都在同一个包(文件夹)中。它们会自动导入,无需为此编写导入语句。
【讨论】:
【参考方案3】:不必导入位于同一包中的类,因为它们彼此可见。你只需 import
一个在另一个包中的类:
import java.util.ArrayList;
请注意,您导入的不是文件,而是类。
【讨论】:
【参考方案4】:您不必导入同一个包中的类。
【讨论】:
【参考方案5】:这都是关于包的。您正在尝试使用不需要显式导入 java 文件的默认包中的类,即 GradeBookTest 中的 GradeBook
您可以从这里开始学习包:
Java Package Tutorial
和:
Creating and Using Packages
【讨论】:
【参考方案6】:嗯,同一个包中的类是自动导入的。
【讨论】:
【参考方案7】:Imports 用于导入不同包中的类。由于您没有为任何一个声明包,因此它们都放在默认包中。编译器可以找到它,因为该类位于同一目录中。
【讨论】:
【参考方案8】:它们在同一个包中。这个tutorial 会比我更公正。
【讨论】:
【参考方案9】:Java 不像 C 那样使用包含。相反,java 使用了一个名为 classpath 的概念,一个包含 java 类的资源列表。 JVM 可以通过名称访问类路径上的任何类,因此如果您可以扩展类并通过声明它们来引用类型。
发件人:Include one java file in another java file
【讨论】:
以上是关于为啥我不必导入我刚刚制作的类以在我的主类中使用它? (爪哇)的主要内容,如果未能解决你的问题,请参考以下文章