【问题标题】: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 类及其方法在哪里找到?如果我们不导入该类,它又如何知道它是否存在?

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

提前谢谢你。

【问题讨论】:

    标签: java class import


    【解决方案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

                    【讨论】:

                      猜你喜欢
                      • 2020-12-04
                      • 1970-01-01
                      • 2021-06-07
                      • 1970-01-01
                      • 2020-05-21
                      • 2020-10-28
                      • 1970-01-01
                      • 1970-01-01
                      • 2018-11-29
                      相关资源
                      最近更新 更多