Java中的多个类和主方法,以及包、名称空间
在Eclipse中.java文件名必须与类名相同。这在任何情况下都是真的,还是只适用于Eclipse?对于main方法,它看起来像C中的main函数,但问题是,如果我有两个类都有自己的main方法,并且可以将它们链接在一起呢?另外,我可以在一个.java文件中编写两个类吗?我在Windows中使用Eclipse,它与Linux版本相同吗 对于包,我的书告诉我包就是目录。因此,要指定文件所属的包,我是否只需要说“package my_pack”?我是否需要创建一个像/src/my_pack这样的目录并将我的.java文件放在其中 第三,什么是名称空间?它与包和类有什么关系 1)这是Java的东西。文件名必须与文件中的公共类匹配。如果没有公共类,您几乎可以命名任何东西。如果有两个类具有一个main方法,那么其中一个可以调用另一个。它们像在C中一样相互关联,只是相互编译。在同一个文件中可以有两个类;只有一个可以公开。Eclipse在不同的操作系统中非常相似。对于操作系统的差异,存在一些差异 2) 我的包没有遵循好的命名约定。my.pack或com.my是更好的名称。但是,是的,您希望创建该目录 3) Java没有使用名称空间这个术语,但我说包就像名称空间一样 在Eclipse中.java文件名必须与类名相同。这在任何情况下都是真的,还是只适用于Eclipse java文件必须与包含的公共类具有相同的名称 对于main方法,它看起来像C中的main函数,但问题是,如果我有两个类都有自己的main方法,并且可以将它们链接在一起呢 是的,在同一个项目中可以有两个类,它们都有一个Java中的多个类和主方法,以及包、名称空间,java,namespaces,packages,Java,Namespaces,Packages,在Eclipse中.java文件名必须与类名相同。这在任何情况下都是真的,还是只适用于Eclipse?对于main方法,它看起来像C中的main函数,但问题是,如果我有两个类都有自己的main方法,并且可以将它们链接在一起呢?另外,我可以在一个.java文件中编写两个类吗?我在Windows中使用Eclipse,它与Linux版本相同吗 对于包,我的书告诉我包就是目录。因此,要指定文件所属的包,我是否只需要说“package my_pack”?我是否需要创建一个像/src/my_pack这样的目
静态void main(String[]args){…}
方法,但是只有1个类是项目的主类,您应该通过在清单文件中声明它来决定哪个类是主类
阅读更多关于此的信息:
package edu.home.bean;
public class TheClass {
class SomeClass {
}
}
class AnotherClass {
}
编辑:
当您没有定义类的公共访问权限时,它可能具有默认
或私有
访问权限,具体取决于声明的位置。在上面的示例中,SomeClass
将具有private
访问权限,并且只能通过class
访问,而另一个类可以从同一包中的任何类访问。这意味着,与edu.home.bean
不同的包中的类不能访问另一个类
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++),因此,只要Java虚拟机(JVM)安装在要运行/开发Java项目的操作系统中,就可以将代码从Windows移植到Linux和viceversa
对于包,我的书告诉我包就是目录。因此,要指定文件所属的包,我是否只需要说“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
}
}
java中的规则是公共类名与.java文件名相同,而与任何IDE无关
如果一个.java文件中只有一个类的名称与公共类的名称相同,则可以有多个类。如果一个.java文件中没有公共类,该怎么办?我的意思是,既然没有人是公共的,谁能访问这些类?对于两个都使用main方法的类,“一次可以调用另一个”是什么意思?你是说一个main方法可以调用另一个main,比如secondclass.main(),还是一个程序在编译后可以调用另一个要运行的程序?如果是前一种情况,我们只想编译第一个类,对吗?如果没有公共类,同一个包中的其他类可以访问它。一个main方法将包含SecondClass.main(args),它将调用另一个方法。您需要在某个时候编译这两个方法,以便.class文件存在。但是,既然两个主要方法都可以运行,并且都已编译,那么系统如何知道哪一个是真正的主要方法呢?这听起来像是C语言中的两个主要功能,系统可能会把它们混在一起。它也会运行你告诉它的那个。如果运行“JavaClassOne”,它将运行ClassOne中的main方法。如果您运行“java ClassTwo”,它将运行位于ClassTwo中的main方法。你看,每个类,即使在一个文件中有数百个,也会在自己的.class文件中编译。然后,通过指定java的名称来告诉java要运行哪一个。您指定的方法应具有公共静态void main
方法。