一个java文件只能有一个public类,而且此类的名字须与文件名一致

来源:互联网 发布:抽奖软件免费版 编辑:程序博客网 时间:2024/05/02 01:45

一个java文件只能有一个public类,而且此类的名字须与文件名一致

补充:这不是说一个程序必须要有一个public类,其实也可以没有,如下面一个程序也是可以执行的:

class HelloWorld

{

public static void main(String[] args){

System.out.println("HelloWorld!");

}

}

另外还需要注意,该程序文件名最好与这个类名一样,否则编译不会报错,但是用“java HelloWorld”运行时会出现“错误: 找不到或无法加载主类 HelloWorld”这个错误。当然你看了下面这个例子其实上面那个名字也可以不一样,但是自己运行时要注意。

例子:

  当主类用public修饰时,主类相应的文件名也必须用类名来取名字。如果,主类没有用public则文件名可以是任意的。
如:在文件 A.java中,你定义了一个如下的类:
class Demo{
...
public static void main(String[] args){
...
}
}
当你用javac A.java时是不会出错的,
但是当你用java A去执行你的程序时就会报错,
这个时候你必须用java Demo去执行你的程序。
因为,
javac A.java
生成的是 Demo.class文件,
所以要用java Demo 去运行程序。


当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也称为转译单元)。每个编译单元都必须要有一个后缀为.java,而在编译单元内测可以有一个public类,该类的名称必须与文件名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public类,否则编译器就不会接受。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为他们不是public类,而且他们主要用来为主要public类提供支持。

1. 每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出出错信息。
2. public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写。所以对于Widget而言,文件的名称必须是Widget.java,而不是widget.java或WIDGET.java。如果不匹配,同样将得到编译时错误。
3. 虽然不是很常用,但编译单元内完全不带public类也是可能的。这种情况下,可以随意对文件命名。(尽管随意命名会使得人们在阅读和维护代码时产生混淆。)

0 0