黑马程序员技术交流社区
标题:
public类的小问题
[打印本页]
作者:
王冬
时间:
2012-9-6 10:53
标题:
public类的小问题
本帖最后由 王冬 于 2012-9-6 12:09 编辑
今天碰到一个错误“类**是公共的,必须在**.java文件中声明”,一个程序中只能有一个public类吗?另外,如果在两个类中都有main方法,那么函数的入口是哪个?
作者:
邱成
时间:
2012-9-6 11:07
1.一个java源文件最多只能有一个public类,而且这个源文件的名字必须和这个public类相同。 但可以没有public类,命名时和此源文件中任何一个类名相同都可以。
2.程序中的每个类都可以有一个main函数,但是程序执行的时候只执行最先出现的main类.
例如:
class Father {
public void showFather() {
System.out.println( "I 'm father. " ) ;
}
public static void main( String args[] ) {
Father F = new Father() ;
F.showFather() ;
}
}
class Son {
public void showSon() {
System.out.println( "I 'm son. " ) ;
}
public static void main( String args[] ) {
Son S = new Son() ;
S.showSon() ;
}
}
程序执行的结果是: "I 'm father. ",显然没有执行Son类的主函数,难道编译器认为第一次出现的main函数为程序的入口......
作者:
田旭阳
时间:
2012-9-6 11:10
一个程序中只能有一个public类吗?
个人理解:可能没有public类。源程序中 ,当有2个以上类时,就必须要有1个public类,并且该类只能为main所在的类。
(没有public 类也能编译运行。。试过了。。)
那么函数的入口是哪个?
个人认为在执行的时候,只执行public的main(); 先执行执行public的main();
作者:
张飞年
时间:
2012-9-6 11:35
你的“一个程序中”是指一个文件中吧,如果这样的话,每个文件(编译单元)都只有一个public 类。因为每个编译单元都只能有一个公共接口,用public类来表现。该接口可以按照要求包含众多的支持包访问权限的类。如果有一个以上的public 类,编译器就会报错。 并且public类的名称必须与文件名相同(严格区分大小写)。 当然一个编译单元内也可以没有public类,这样文件名可以与这个文件中的任何一个相同都 可以。
当一个文件中有两个类,每个类中都 有一个主函数,则入口以文件名为准,运行对应的类里的main(因为编译时需要指定文件名,接着JVM去找与文件名同名的类,是否是public 不管,然后去运行里面的main方法,如果没有则报错。 )
最后求分。{:3_53:}
作者:
武庆东
时间:
2012-9-6 11:42
本帖最后由 武庆东 于 2012-9-6 11:44 编辑
一个源文件中有一个public类或者没有,如果其中一个类的修饰符为public那么文件的名字和类名一致!
因为一个主类中中只有一个入口,所以只能有一个main()方法!
作者:
孙岳
时间:
2012-9-6 11:46
如果一个.java文件中有多个类,那么
1,可以有一个public类,类名与文件名相同。
2,也可以没有public类,但main方法所在类必须和文件名相同。
3,可以有多个main方法,但其中至少一个main方法所在类的类名必须和文件名相同,执行时从该类进入,执行第一个出现的static main方法。
其他类中的main方法及该类中的其他main方法不执行。
作者:
王冬
时间:
2012-9-6 12:09
孙岳 发表于 2012-9-6 11:46
如果一个.java文件中有多个类,那么
1,可以有一个public类,类名与文件名相同。
2,也可以没有public类, ...
明白了,谢谢大家:victory:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2