举个例子:
public class Test {
public static void main(String[] args) {

System.out.println("Test");
}
}class B extends Test {
public static void main(String[] args){
System.out.println("B");
}

}
对于static,子类与父类必须是一样的,要么同时存在,要么同时不存在,都没错。
对于public,同时存在同时不存在也没问题,另外只去掉Test类main的public也没错,但是如果只去掉B类main的public就会出错。这是问什么呢?
哪位给解释一下啊?

解决方案 »

  1.   

    两个都写public一点意义都没有
    如果不写他默认的是private
    而JAVA明确规定子类的方法要比父类更宽
    你子类写个重载或覆盖父类的私有方法是没有意义的
      

  2.   

    我只知道一个类中 只能有一个public类和一个main方法。
      

  3.   

    多态。他会去执行子类的方法,如果找不到就去父类找,不管main方法多么特殊,是static方法就不能被重写,因此如果子类出现父类的static方法,其实是一个新方法,你去掉就没有方法了,咋执行?
      

  4.   

     子类覆盖的语法,不是有 子类的方法不能别被覆盖的方法有更严格的访问控制,你如果不写,就是默认的,默认的,肯定比public 更严格。
      

  5.   

    main方法只弄有一个把,没那样做过