厉害!刚开始学就发现这样的问题。
我在Jdk1.4.0上也会出现这样的情况,如果前面加上final也可以。所以怀疑默认是final,但证明不是这样,因为它是能被继承的。
不过编译后.class 文件的名字是和类名是一致的。
可能是java在编译时只对加了public 的类才进行类名与文件名是否一致的检查。
我在Jdk1.4.0上也会出现这样的情况,如果前面加上final也可以。所以怀疑默认是final,但证明不是这样,因为它是能被继承的。
不过编译后.class 文件的名字是和类名是一致的。
可能是java在编译时只对加了public 的类才进行类名与文件名是否一致的检查。
至于运行的,如果没有定义类为public的,只要里面含有按规定形式的main方法,都可以运行的,例如:class Test {
public static void main(String[] args) { //somecode }
}这个程序运行没问题。另外,java是这么规定的(呵呵,他们规定,我们必须遵守呀):
1. 任何源文件至多只含一个public 类
2. 如果含有public类,那么必须和源文件名字相同
3. 可以包含若干个非public类
4. 可以没有任何public类,这时文件名可以随便定