黑马程序员技术交流社区

标题: 求助? [打印本页]

作者: @ne_pie尒ce    时间: 2013-11-8 18:46
标题: 求助?
Something类的文件名叫OtherThing.java
class Something {
   
private static void main(String[] args){        
        System.out.println("Dosomething ...");
    }
}
这里为什么类名可以与java文件名不同呢?
为什么使用private,不用public程序也可以运行呢?




作者: ~﹏~    时间: 2013-11-8 20:22
从来没有人说过Java 的Class 名字必须和其文件名相同。
但public class 的名字必须和文件名相同。
为什么使用private,不用public程序也可以运行呢?
我的Eclipse如果将main声明为private,这个类就运行不了,右击类名只有run configurations选项,不知道你是运行的哪个类;
作者: 张秀威    时间: 2013-11-8 20:38
你的程序中只要定义的类是public修饰的话,那么文件名就必须和这个类名一致!当然你可以在一个程序中定义多个类,但是程序中只能有一个类是public 修饰的,,OK!
作者: @ne_pie尒ce    时间: 2013-11-8 21:06
~﹏~ 发表于 2013-11-8 20:22
从来没有人说过Java 的Class 名字必须和其文件名相同。
但public class 的名字必须和文件名相同。
为什么使 ...

我运行成别的类了,改成private修饰就找不到Something类了,不知道为什么
作者: 中关村阿旺    时间: 2013-11-8 22:38
因为Something类并没有被public修饰符修饰,而是用默认修饰符修饰的,所以源文件名称可以不与类名相同。因为编译时,会生成和类名相同的.class文件。真正执行的是Something.class文件。如果Something类是public修饰的,那么源文件名就应该是Something.java。
如果Something类中的main方法的修饰符改成private,就不可能被java虚拟机执行。因为java虚拟机只识别固定格式的main方法!你改了修饰符,程序也可以运行,那么程序的入口应该在别的类中,虚拟机绝对不可能识别private修饰的main方法!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2