java文件名可否于其中的类名不同?

jajajaja 2001-10-03 10:50:13
...全文
209 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lusxiao 2001-10-04
  • 打赏
  • 举报
回复
其实是这样的:
可以有这样的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所以它们的名字不可能和文件名相同。

BugHunterPro 2001-10-04
  • 打赏
  • 举报
回复
Test.java:
这样是可以的
public class Test{
}
class Test1{
}
jt80 2001-10-03
  • 打赏
  • 举报
回复
no!
lusxiao 2001-10-03
  • 打赏
  • 举报
回复
例如:
Test.java中:
public class Test1 {
}
不能通过编译

class Test1 {
}
可以
所以,结论是public class的名字要和文件名相同。
lusxiao 2001-10-03
  • 打赏
  • 举报
回复
当你声明成public class时不能通过编译。但不声明public可以编译,但你能指望它能用吗?
xzh1980 2001-10-03
  • 打赏
  • 举报
回复
其实是这样的,在java中规定,以.java为扩展名的java文件里可以包括多个class,但是只允许有一个public class。 如:

//abc.java
class abc1 {}

public class {}


62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧