问答详情
源自:9-1 Java 中的继承

关于静态方法跟main()方法的继承跟重写问题?求大神解惑!

静态方法和main()方法能继承和重写吗?看到问答区中有人说不能,但是自己上eclipse尝试的时候好像是可以的,可以看看下面的代码!

//父类A

package com.shiyan2;


public class A {

     public static void print(){                                             //想要被继承的静态方法

    System.out.println("执行了A类的pring方法!");

     }

     

     public static void main(String[] args) {              //想要被继承的main()方法

for(int i=0;i<args.length;i++){

System.out.println(args[i]);

}

System.out.println("调用了A类的main方法");

}

}

//子类B

package com.shiyan2;


public class B extends A {

       /*public static void print(){                                    //对print方法的重写

      System.out.println("父类中print方法的重写");

       }*/

       

      /* public static void main(String[] args) {           //对main()方法的重写

    for(int i=0;i<args.length;i++){

    System.out.println(args[i]);

    }

    System.out.println("调用了重写后的A类的main方法");

    }*/

}

//测试类

package com.shiyan2;


public class Initial {                                               

     public static void main(String[] args) {          

B b=new B();                                                      //实例化的是子类的对象

String str[]={"1","2","3","4"};

b.main(str);                                              //对main()方法的调用

b.print();                                                  //对print的调用

}

}

  //然后这个格式也很奇怪啊,main中还有main ,一个程序不是只能一个主路口吗?



提问者:wswzh0329 2015-10-05 21:57

个回答

  • 天启之魂
    2015-10-06 10:52:43
    已采纳

    第一 你子B类的main方法并不是继承的A类的main方法 而是自己的main方法 所以也不存在重写的问题

    第二 测试类中的入口就是测试类中的main方法, 你在方法中调用别的类的重名方法不是很正常的事吗 ?不存在两个入口的问题,


  • wswzh0329
    2015-10-18 19:55:16

    静态方法能够被继承,但是不能被重写,存在一模一样的静态方法只能说是把父类的方法给隐藏了,并不是被重写!!

  • 天启之魂
    2015-10-06 13:58:14

    我说错了 静态函数只能被静态函数覆盖,也就是重写!

  • 天启之魂
    2015-10-06 13:39:26

    静态函数只能被静态函数继承