例如: Test.java中: public class Test1 { } 不能通过编译 但 class Test1 { } 可以 所以,结论是public class的名字要和文件名相同。
Test.java: 这样是可以的 public class Test{ } class Test1{ }
其实是这样的: 可以有这样的java程序: lib.java: class lib1{ void a(){} }Test.java public class Test{ void b(){ (new lib1()).a(); } }这样的程序是可以运行。在这里public class的名字要和文件名相同,但包内可用的class的名字可以和文件名不相同,但如果这样的话就要付出一定的代价:当直接javac Test.java时java不能自动解析lib1的所在,所以你必须手工编译lib.java,然后再javac Test.java。但若类名跟文件名相同时,java就可以自动根据文件名找到类,所以你只要编译public class就可以了。所以,结论是public class的名字要和文件名相同。package class的名字可以和文件名不相同,但最好相同,至于protected class and private class由于你不可能在一个文件里仅有protected class and private class所以它们的名字不可能和文件名相同。
Test.java中:
public class Test1 {
}
不能通过编译
但
class Test1 {
}
可以
所以,结论是public class的名字要和文件名相同。
这样是可以的
public class Test{
}
class Test1{
}
可以有这样的java程序:
lib.java:
class lib1{
void a(){}
}Test.java
public class Test{
void b(){
(new lib1()).a();
}
}这样的程序是可以运行。在这里public class的名字要和文件名相同,但包内可用的class的名字可以和文件名不相同,但如果这样的话就要付出一定的代价:当直接javac Test.java时java不能自动解析lib1的所在,所以你必须手工编译lib.java,然后再javac Test.java。但若类名跟文件名相同时,java就可以自动根据文件名找到类,所以你只要编译public class就可以了。所以,结论是public class的名字要和文件名相同。package class的名字可以和文件名不相同,但最好相同,至于protected class and private class由于你不可能在一个文件里仅有protected class and private class所以它们的名字不可能和文件名相同。