繁体   English   中英

为什么我不必导入我刚刚在我的主要 class 中使用它的 class? (爪哇)

[英]Why don't I have to import a class I just made to use it in my main class? (Java)

我目前正在使用 Deitel 的书 Java How to Program 8th edition(早期对象版本)学习 Java。

我在关于创建类和方法的章节。

但是,我对那里提供的示例感到非常困惑,因为它由两个单独的.java 文件组成,当其中一个使用另一个方法时,它没有导入 class。 它只是从 other.java 文件中创建了 object 的 class 文件,而没有先导入它。

这是如何运作的? 为什么我不需要导入它?

这是书中的代码(我删除了大多数评论,以节省打字空间/时间......):.java class:

//GradeBook.java

public class GradeBook
{
    public void displayMessage()
    {
        System.out.printf( "Welcome to the grade book!" );
    }
}

main.java文件:

//GradeBookTest.java

public class GradeBookTest
{
    public static void main( String[] args)
    {
        GradeBook myGradeBook = new GradeBook();
        myGradeBook.displayMessage(); 
    }
}

我以为我必须写

import GradeBook.java;

或类似的东西。 编译器如何知道在哪里找到了 GradeBook class 及其方法,如果我们不导入 class,它如何知道它是否存在?

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

先感谢您。

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

您不必导入与当前 class 相同的 package 中的类。

另外,请注意 GradeBook.java 是文件的名称。 class 的(简单)名称是 GradeBook。 每个 class 都应该在 package 中。 If it is in the package com.foo.bar, the class name is com.foo.bar.GradeBook, and this is the name you must use when importing this class.

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

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

import java.util.ArrayList;

请注意,您导入的不是文件,而是 class。

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

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

Java Package 教程

和:

创建和使用包

Java 不使用包括 C 的方式。 取而代之的是 java 使用称为类路径的概念,即包含 java 类的资源列表。 JVM 可以通过名称访问类路径上的任何 class,因此如果您可以扩展类并通过声明它们来引用类型。

来自: 在另一个 java 文件中包含一个 java 文件

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

您不必导入同一个 package 中的类。

那么,自动导入同一个 package 中的类。

它们在同一个 package 中。 教程将比我做的更公正。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM