在Eclipse中,.java文件名必须与类名相同。在任何情况下或仅在Eclipse中都是如此吗?对于main方法,它看起来像C中的main函数,但问题是,如果我有两个类都有自己的main方法并且可以将它们链接在一起怎么办?另外,我可以在一个.java文件中编写两个类吗?我在Windows中使用Eclipse,是否与Linux版本相同?
对于包,我的书告诉我包是一个目录。因此,要指定文件所属的包,我只需要说"包my_pack"?我是否需要创建一个像/ src / my_pack这样的目录并将我的.java文件放入其中?
第三,什么是命名空间?它与包和类的关系是什么?
答案 0 :(得分:11)
在Eclipse中,.java文件名必须与类名相同。它在任何情况下都是正确的还是仅适用于Eclipse?
java文件必须与包含的公共类同名。
对于main方法,它看起来像C中的main函数,但问题是,如果我有两个类都有自己的main方法并且可以将它们链接在一起怎么办?
是的,您可以在同一个项目中有两个具有static void main(String[] args) {...}
方法的类,但只有1个是您项目的主类,您应该通过在清单中声明它来决定哪个类文件。
了解更多相关信息:
另外,我可以在一个.java文件中编写两个类吗?
是的,你可以,只要文件中只有一个类,并且该类的名称与文件名相同:
TheClass.java文件
package edu.home.bean;
public class TheClass {
class SomeClass {
}
}
class AnotherClass {
}
编辑:
如果您未定义对类的公共访问权限,则可以default
或private
访问,具体取决于声明的位置。在上面的示例中,SomeClass
将具有private
访问权限,只能由TheClass
访问,而AnotherClass
可以从同一个包中的任何类访问。这意味着,与[{1}}不同的程序包中的类无法访问edu.home.bean
。
AnotherClass
我在Windows中使用Eclipse,是否与Linux版本相同?
Java的一个优点是代码是独立于平台的(不像C或C ++),因此只要Java虚拟机(JVM)安装在Java中,您就可以将代码从Windows移植到Linux上。您想要运行/开发Java项目的操作系统。
对于包,我的书告诉我包是一个目录。因此,要指定文件所属的包,我只需要说“package my_pack”吗?
是的,这本书是对的。当您拥有Java项目(如MyFirstJavaProject)时,您可以在该文件夹中设置源文件夹和包。这些包将是源文件夹的子文件夹。一个例子:
Eclipse中的项目结构:
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;
}
我是否需要创建/ src / my_pack这样的目录并将我的.java文件放入其中?
您可以手动执行此操作,或者让您的IDE(在本例中为Eclipse)为您执行此操作,就像在包中创建包和类一样简单。
第三,什么是命名空间?它与包和类的关系是什么?
Java不支持命名空间,而是使用包来促进类的管理/关系。您可以从另一个包(第一个表单)导入类,或者使用具有完整包名的类(第二个表单)。
第一种形式的例子:
+ 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
第二种形式的例子:
package package1;
public class Package1Class {
}
package package2;
import package1.Package1Class;
public class Package2Class {
private Package1Class x;
public Package2Class (Package1Class x) {
this.x = x
}
}
答案 1 :(得分:1)
1)这是一个Java的东西。文件名必须与文件中的公共类匹配。如果没有公共课,你几乎可以说出任何名字。如果你有两个带有main方法的类,可以调用另一个。它们像C一样链接。只是相互编译。你可以在同一个文件中有两个类;只有一个可以公开。 Eclipse在操作系统中非常相似。考虑到操作系统的差异,存在一些差异。
2)my_pack不遵循良好的命名约定。 my.pack或com.my是一个更好的名字。但是,是的,你想要创建该目录。
3)Java不使用术语命名空间,但我wikipedia表示包类似于命名空间。
答案 2 :(得分:0)
java中的规则是公共类名与.java文件名相同,与任何IDE无关。
.java文件中可以有多个类,前提是只有其中一个类与公共类的名称相同。