Java之 public class 和 class 的区别
1. public class 和 class 的区别
- 一个java源文件当中可以定义多个
class
- 一个java源文件当中
public
的class
不是必须的 - 一个
class
会定义生成一个xxx.class
字节码文件 - 一个java源文件当中定义公开的类的话,只能有一个,并且该类名称必须和
java
源文件名称一致 - 每一个
class
当中都可以编写main
方法,都可以设定程序的入口,向执行B.class
中的main
方法:java B
,想执行x.class
当中的main方法:java x
- 注意:当在命令窗口中执行
java Hello
,那么要求hello.class
当中必须有主方法。
- 没有主方法会出现运行阶段的错误:在类B中找不到主方法,请将主方法定义为:
public static void main (string[]args)
案例:定义一个ABC.java
class A{
}
class B{
}
class C{
}
- 使用
javac
命令编译之后生成了三个字节码,分别是A.class、B.class、C.class
。执行 :javac ABC.java
,就会生成三个.class
文件
- 通过以上的测试可以得出:一个
java
源文件中可以定义多个class
,并且在编译的时候一
个class
会对应编译生成一个class
字节码文件。还有,public
的class
可以没有。 - 接下来,在
ABC.java
源代码中继续定义一个“公开的类 D
”,请看下图
- 可以看到,定义公开的
类 D
之后,再次编译,编译器报错了。并且提示的错误信息是:
类 D 是公共的,应在名为D.java
的文件中声明。换句话说在A.java
文件中定义的公共的类的名字必须是A
,不能是其它名称。也间接说明在同一个java
文件中公共的类只能有一个(注
意:在同一个java
文件中类名不能重名)。 - 通过以上的测试可以得出:如果定义
public class
的类,只能定义一个,并且要求此类名必
须和java
源文件名保持一致。(这是规则记住就行)。 - 接下来,在每一个类的类体当中都定义
main
方法,都写上程序的入口,看看是否可以编译和运行:
class A{
public static void main(String[] args){
System.out.println("A...");
}
}
class B{
public static void main(String[] args){
System.out.println("B...");
}
}
class C{
public static void main(String[] args){
System.out.println("C...");
}
}
public class ABC{
public static void main(String[] args){
System.out.println("ABC...");
}
}
javac ABC.java
- 随便从一个类中进入入口函数:
java A 、java B
- 可以看到,在每一个
class
中都可以编写main
方法,想让程序从哪个入口进去执行则加载该类即可
2. 总结:
- 通过以上的测试可以得出:任何一个
class
中都可以设定程序入口,也就是说任何一个class
中都可以写main
方法(主方法),想从哪个入口进去执行,则让类加载器先加载对应的类即
可,例如:想让 A类中的main
方法执行,则执行:java A
,想让 B 类中的main
方法执行,则
执行:java B
。但实际上,对于一个完整的独立的应用来说,只需要提供一个入口,也就是说
只需要定义一个 main 方法即可。 - 还有,在实际的开发中,虽然一个
java
源文件可以定义多个class
,实际上这是不规范的,
比较规范的写法是一个java
源文件中只定义一个class
。
本文来自博客园,作者:兮动人,转载请注明原文链接:https://www.cnblogs.com/xdr630/p/15254790.html