A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 沙漠里的小鱼 黑马帝   /  2013-11-30 20:39  /  1608 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test1 {
/**
  * @param args
  */
public static void main(String[] args) {
  System.out.println(123);
  }
}
class Test2 {

}
class Test3 {
}
比如我用ECLIPSE创建一个类Test1 为啥下面Test2 和Test3 就不能是PUBLIC了

评分

参与人数 1黑马币 +1 收起 理由
乔兵 + 1

查看全部评分

5 个回复

倒序浏览
java程序是从一个public类的main函数开始执行的,(其实是main线程),就像C程序是从main()函数开始执行一样。只能有一个public类是为了给类装载器提供方便. 一个public   类只能定义在以它的类名为文件名的文件中。每个编译单元(文件)都只有一个public   类。因为每个编译单元都只能有一个公共接口,用public类来表现.该接口可以按照要求包含众多的支持包访问权限的类。如果有一个以上的public类,编译器就会报错.并且public类的名称必须与文件名相同(严格区分大小写)。当然一个编译单元内也可以没有public类。在一个源文件.JAVA文件中可以有很多类,只有一个public类其他的都不能是.在public类中找程序的入口   main函数  你想想如果很多public   类,那程序从何运行呢?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
学习了。这个问题看上去,很底层。一般还没怎注意。。顶。
回复 使用道具 举报
其实我在看api源码的时候就发现了,写一个类就是一个.java文件。像老毕那样,在一个.java文件中写上好几个类的真没看见过。。
回复 使用道具 举报
汪洋大海 发表于 2013-12-1 00:49
其实我在看api源码的时候就发现了,写一个类就是一个.java文件。像老毕那样,在一个.java文件中写上好几个 ...

其实老毕也说了,他在讲课时为了咱们看着方便,就写在一个里面了。尤其是讲网络编程时,TCP的客户端和服务端,UDP的发送端和接收端,都有主函数,在Eclipse里就不能写在一起了。
回复 使用道具 举报
首先,楼主所说的问题所针对的情况是在“一个java源文件中包含多个类时”,这样只能够有一个public类,因为java程序的入口是main方法,所以被定为public的这个类里一定是含有main方法的类,而且该类的名称要和文件名一致,因为虚拟机开始要找main的.
在标准的java代码编写时,无论代码量多少,最好一个源文件里只有一个类或接口(接口也要单独写在一个源文件里),因为JAVA是面向对象的语言,每个类都是抽象的结果,所以每个类都要单独写在一个源文件里.
最好不要在一个.java的源文件里写很多的类.

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马