//Test2.java
class Test1{
private String s="Test1";
public void append (String a) {s+=a;}
public void me() {append("me()");}

public String toString() {return s;}
public static void main(String[] arg) { //Test1 main()
Test1 t1=new  Test1();
t1.me();
System.out.println(t1);
}
}public class Test2 extends Test1{
    public void you() {append("you()");}
public static void main(String[] args) { //Test2 main()
Test2 t2=new Test2();
t2.me();
t2.you();
System.out.println(t2);
Test1.main(args);
//Test1.main(arg);   error
}
}
//output :Test1me()you()
          Test1me()提问:1.Test2 main()中Test1.main(args);语句,用类名直接调用main(),括号中的参数应该是什么
     2.参数为什么只能是args
    3.参数换成arg,就出错,由此看Test1.main(args);是调用的子类中main(),为什么由输出结果看是调用的父类的main()

解决方案 »

  1.   

    你的Test2中有arg这个变量么?String[] args  很明显写着是args啊,你用arg当然错了
      

  2.   

    按你的说法,Test1.main(args);是调用的Test2中的main()了,那为什么输出结果不是按Test2中main()的语句执行输出的?
      

  3.   

    按你这样的顺序,你每次运行的都是Test1里面的main,完了就结束了,下面的class Test2根本没用到。
    至于参数问题,你的函数的参数名是什么,函数体里当然就得用什么,晕。你main里面放arg不就可以用arg了
    你把两个类的位置换下,就可以都用到,而且可以看出static方法不会被覆盖,但是append方法就被覆盖了。