1. 每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出出错信息。
2. public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写。所以对于Widget而言,文件的名称必须是Widget.java, 而不是widget.java或WIDGET.java。如果不匹配,同样将得到编译时错误。
3. 虽然不是很常用,但编译单元内完全不带public类也是可能的。这种情况下,可以随意对文件命名。(尽管随意命名会使得人们在阅读和维护代码时产生混淆。)
Thinking in java 4th, 第6章, 倒数第二段。
package teststring;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright 2003</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/
public class test
{
int a;
int b;
public test(int aa,int bb)
{
a = aa;
b = bb;
}
int add()
{return a+b;}
}
public class hehe
{
public static void main(String args[])
{
int a = 2;
int b = 3;
int c= a+b;
System.out.println;
test kk=new test(1,2);
System.out.println(kk.add());
}
}
以上是我的test.java文件我编译时出现;
"test.java": Error #: 475 : class hehe is public; must be declared in a file named hehe.java at line 24, column 8
提示,请问什么原因。
答复:一个.Java文件可以有多个类作为内部类/Adapter类/其它类,但是只能有一个public类,且类名必须和文件名一致。
这是这类语言的一个不好的地方。在现实情况中,经常有一些很小的类由几个类共同需要,因此无法作为内部类,而且接口关系必须设置为public,这样就导致了大量很小的.Java程序,每个都只有几百字节。
这类语言的另一个问题是一个类的所有实现的方法都必须包含在同一个文件中。在swing应用程序中,经常导致长达一两百K字节的源程序,行数达到三四千行,搞得JBuilder奇慢无比。