以前到还真没有想过这么写main方法呢!也不清楚你这样写的原因!不过既然是一个问题嘛:
嘿嘿,我运行这个程序没有任何问题啊!
如果删除所有的注释:
class Game{ 
private String s = new String("Game"); 
public void append(String a){ s += a;} 
public void start() { append(" Start()");} 
public void end()  { append(" End()");} 
public void print() { System.out.println(s);} 
public static void main(String[] args){ 
Game a = new Game(); 
a.start(); 
a.end(); 
a.print(); 

} public class Chess extends Game{ 
public void start(){ 
append(" chess Start()"); 
super.start(); 

public static void main(String[] args){ 
Chess hgame = new Chess(); 
hgame.start(); 
hgame.end(); 
hgame.print(); Game.main(args); 
Game newg = new Game(); 
newg.start(); 
newg.start(); 
newg.print(); 


结果是正常的啊
打印的结果是三行啊:
Game chess Start() Start() End()
Game Start() end()
Game Start() Start()
这没有什么问题啊!

解决方案 »

  1.   

    一个程序只能有一个切入口。
    显然你这里的切入口就是Chess里的main方法。
    但这并不是说你只能有一个main方法,可以有其它的main方法。
    其它的static main方法将被看作一般的类方法。
    像你这个程序是可以的,只是你在Chess类里把父类的main方法hide了(因为static 方法是不能被override的)。
    这个程序的运行结果如楼上所说。
    另外,如果你想要把Game里的main作为程序切入点,只需把文件名改为Game.java,并把Chess前面的public移到Game前就行。再补充一点,如果你没在Chess里定义main方法,那么系统将自动继承调用Game里的main方法。
      

  2.   

    楼上的高手学JAVA 多长时间了,好仰慕亚,能不能教点经验?
      

  3.   

    :)谢谢,那个game.main是用来作测试的:)
    倒是忘了static的问题55555
    还是概念很不熟啊:(
    给分了