3

在 Eclipse 中,.java 文件名必须与类名相同。在任何情况下都是真的还是仅适用于 Eclipse?对于 main 方法,它看起来像 C 中的 main 函数,但问题是,如果我有两个类都有自己的 main 方法并且可以将它们链接在一起怎么办?另外,我可以在一个 .java 文件中编写两个类吗?我在Windows中使用Eclipse,它与Linux版本相同吗?

对于包,我的书告诉我包是一个目录。所以要指定一个文件所属的包,我只需要说“package my_pack”吗?我是否需要创建一个类似 /src/my_pack 的目录并将我的 .java 文件放入其中?

三、什么是命名空间?它与包和类有什么关系?

4

3 回答 3

11

在 Eclipse 中,.java 文件名必须与类名相同。在任何情况下都是真的还是仅适用于 Eclipse?

java 文件必须与包含的公共类同名。

对于 main 方法,它看起来像 C 中的 main 函数,但问题是,如果我有两个类都有自己的 main 方法并且可以将它们链接在一起怎么办?

是的,您可以在同一个项目中拥有两个具有static void main(String[] args) {...}方法的类,但只有 1 个是您项目的主类,您应该通过在清单文件中声明它来决定哪个是主类。

阅读有关此的更多信息:

另外,我可以在一个 .java 文件中编写两个类吗?

可以,只要文件中只有一个类并且该类的名称与文件名相同即可:

Class.java 文件

package edu.home.bean;

public class TheClass {
    class SomeClass {
    }
}

class AnotherClass {
}

编辑:

当你没有定义对一个类的公共访问时,它可能拥有defaultprivate访问,这取决于声明的位置。在上面的示例中,SomeClass将具有private访问权限,并且只能通过 访问TheClass,而AnotherClass可以从同一包中的任何类访问。这意味着,包中的类不同于edu.home.beancan't access AnotherClass

package edu.home.control;

public class ControlClass {
    //this line compiles fine
    private TheClass x;
    //compilation error, it can't access for being in a different package
    private AnotherClass y;
    //compilation error, it can't access because its scope works only in TheClass
    private SomeClass z;
}

我在Windows中使用Eclipse,它与Linux版本相同吗?

Java 的一个好处是代码是平台独立的(不像 C 或 C++),因此您可以将代码从 Windows 移植到 Linux,反之亦然,只要在您的操作系统中安装了 Java 虚拟机 (JVM)想要运行/开发 Java 项目。

对于包,我的书告诉我包是一个目录。所以要指定一个文件所属的包,我只需要说“package my_pack”吗?

是的,书是对的。当您有一个 Java 项目(如 MyFirstJavaProject)时,您可以在该文件夹中设置一个源文件夹和包。这些包将是您的源文件夹的子文件夹。一个例子:

Eclipse中的项目结构:

+ MyFirstJavaProject
  + src
    + edu.home.bean
    + edu.home.control
    + edu.home.gui
    + another.package


+ MyFirstJavaProject
  + src
    + edu
      + home
        + bean
          ... class files
        + control
          ... class files
        + gui
          ... class files
    + another
      + package

我是否需要创建一个类似 /src/my_pack 的目录并将我的 .java 文件放入其中?

您可以手动完成,或者让您的 IDE(在本例中为 Eclipse)为您完成,就像在包中创建包和类一样简单。

三、什么是命名空间?它与包和类有什么关系?

Java 不使用命名空间,而是使用包来促进类的管理/关系。您可以从另一个包中导入类(第一种形式),或使用具有完整包名的类(第二种形式)。

第一种形式的例子:

package package1;

public class Package1Class {
}

package package2;

import package1.Package1Class;

public class Package2Class {
    private Package1Class x;

    public Package2Class (Package1Class x) {
        this.x = x
    }
}

第二种形式的例子:

package package1;

public class Package1Class {
}

package package2;

public class Package2Class {
    //look that there is not use of the import statement, however everytime you need
    //to call Package1Class, you should provide the full package name
    private package1.Package1Class x;

    public Package2Class (package1.Package1Class x) {
        this.x = x
    }
}
于 2012-06-06T02:16:22.070 回答
1

1) It is a Java thing. The file name must match the public class in the file. If there is no public class, you can name almost anything. If you have two classes with a main method, one can call the other. They are linked like in C. Just compiled against each other. You can have two classes in the same file; only one can be public. Eclipse is very similar across operating systems. There are a few differences to account for OS differences.

2) my_pack doesn't follow good naming conventions. my.pack or com.my is a better name. But yes, you want to create that directory.

3) Java doesn't use the term namespace, but I wikipedia says a package is like a namespace.

于 2012-06-06T02:10:49.607 回答
0

它在 java 中的规则是公共类名与 .java 文件名相同,与任何 IDE 无关。

一个.java 文件中可以有多个类,只要其中一个与公共类同名即可。

于 2015-07-01T19:21:52.617 回答