为什么java源文件有且只能有一个public类

一个.java文件中只能有一个public修饰的类,编译器就会给出错误信息
java将public类作为每个编译单元(java文件)的数据接口,只能有一个,
虽然不是很常用,但编译单元内完全不带public类也是可能的
如图
为什么java源文件有且只能有一个public类
此时程序编译通过,在相应路径下产生了三个.class文件。直接点击运行,程序是不能运行的,我们需要鼠标右键点击程序----->Run As----->Java Aplication----->选数据来源
总结:

一个编译单元(java文件)可以存在多个类,在编译时产生多个不同的.class文件,.class文件便是程序运行的数据来源。java将public类作为每个编译单元的数据接口,只能有一个,不然不能处理存在多个类的java文件。当一个编译单元(java文件)有多个非public类时,运行时需要对数据来源进行选择。