Java中的多个类和main方法,以及包,命名空间
在
Eclipse中,.java文件名必须与类名相同.在任何情况下或仅在Eclipse中都是如此吗?对于main方法,它看起来像C中的main函数,但问题是,如果我有两个类都有自己的main方法并且可以将它们链接在一起怎么办?另外,我可以在一个.java文件中编写两个类吗?我在Windows中使用Eclipse,它是否与
Linux版本相同?
对于包,我的书告诉我包是一个目录.因此,要指定文件所属的包,我只需要说“package my_pack”吗?我是否需要创建一个像/ src / my_pack这样的目录并将我的.java文件放入其中? 第三,什么是命名空间?它与包和类的关系是什么? 解决方法
java文件必须与包含的公共类具有相同的名称.
是的,你可以在同一个项目中有两个具有静态void main(String [] args){…}方法的类,但只有1个是你项目的主类,你应该决定哪一个是通过在清单文件中声明它. 阅读更多相关信息: > Multiple classes in a single Java file,each with a main method – unexpected behavior?
是的,您可以,只要文件中只有一个类,该类的名称与文件名相同: TheClass.java文件 package edu.home.bean; public class TheClass { class SomeClass { } } class AnotherClass { } 编辑: 如果未定义对类的公共访问权限,则可能具有默认或私有访问权限,具体取决于声明的位置.在上面的示例中,SomeClass将具有私有访问权限,并且只能由TheClass访问,而AnotherClass可以从同一个包中的任何类访问.这意味着,与edu.home.bean不同的包中的类无法访问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; }
Java的优点是代码是独立于平台的(不像C或C),因此只要在操作系统中安装了Java虚拟机(JVM),就可以将代码从Windows移植到Linux而反之亦然.想要运行/开发Java项目.
是的,这本书是对的.当您拥有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
您可以手动执行此操作,或者让您的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 } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |