One*_*ero 3 java namespaces packages
在Eclipse中,.java文件名必须与类名相同.在任何情况下或仅在Eclipse中都是如此吗?对于main方法,它看起来像C中的main函数,但问题是,如果我有两个类都有自己的main方法并且可以将它们链接在一起怎么办?另外,我可以在一个.java文件中编写两个类吗?我在Windows中使用Eclipse,它是否与Linux版本相同?
对于包,我的书告诉我包是一个目录.因此,要指定文件所属的包,我只需要说"package my_pack"吗?我是否需要创建一个像/ src/my_pack这样的目录并将我的.java文件放入其中?
第三,什么是命名空间?它与包和类的关系是什么?
Lui*_*oza 11
在Eclipse中,.java文件名必须与类名相同.在任何情况下或仅在Eclipse中都是如此吗?
java文件必须与包含的公共类具有相同的名称.
对于main方法,它看起来像C中的main函数,但问题是,如果我有两个类都有自己的main方法并且可以将它们链接在一起怎么办?
是的,你可以在同一个项目中有两个有一个static void main(String[] args) {...}方法的类,但只有一个是你项目的主类,你应该通过在清单文件中声明它来决定哪一个.
阅读更多相关信息:
另外,我可以在一个.java文件中编写两个类吗?
是的,您可以,只要文件中只有一个类,该类的名称与文件名相同:
TheClass.java文件
package edu.home.bean;
public class TheClass {
class SomeClass {
}
}
class AnotherClass {
}
Run Code Online (Sandbox Code Playgroud)
编辑:
如果未定义对类的公共访问权限,则可以具有default或private访问,具体取决于声明的位置.在上面的示例中,SomeClass将具有private访问权限,只能通过访问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;
}
Run Code Online (Sandbox Code Playgroud)
我在Windows中使用Eclipse,它是否与Linux版本相同?
Java的一个好处是代码是独立于平台的(不像C或C++),因此只要在操作系统中安装了Java虚拟机(JVM),就可以将代码从Windows移植到Linux而反之亦然.想要运行/开发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
Run Code Online (Sandbox Code Playgroud)
我是否需要创建一个像/ 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
}
}
Run Code Online (Sandbox Code Playgroud)
第二种形式的例子:
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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46715 次 |
| 最近记录: |