为了账号安全,请及时绑定邮箱和手机立即绑定

关于静态方法跟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 ,一个程序不是只能一个主路口吗?



正在回答

7 回答

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

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


0 回复 有任何疑惑可以回复我~
#1

wswzh0329 提问者

。。那么只是main()这个静态方法比较特殊,就算是(相同的访问修饰符、方法名、返回值、参数类型跟参数个数)也不算是继承,从而没有重写这一说;还是所有的静态方法都没有继承这一说?
2015-10-06 回复 有任何疑惑可以回复我~
#2

wswzh0329 提问者

非常感谢!
2015-10-18 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

天启之魂

隐藏?怎么个隐藏法?如果一个类中存在两个完全相同的方法 那么调用时就会产生不确定性,java中不会出现这种情况
2015-10-18 回复 有任何疑惑可以回复我~
#2

天启之魂

所以你所谓的隐藏 实际就是重写.....
2015-10-18 回复 有任何疑惑可以回复我~
#3

wswzh0329 提问者 回复 天启之魂

。。最近看了《细说java》,隐藏跟重写并不一样,重写有多态性,隐藏并没有!
2015-10-18 回复 有任何疑惑可以回复我~
#4

wswzh0329 提问者 回复 天启之魂

。。当然,对于普通方法而言,并没有隐藏这一说,隐藏在继承中只是体现在属性和静态方法、内部类的身上
2015-10-18 回复 有任何疑惑可以回复我~
#5

天启之魂 回复 wswzh0329 提问者

嗦嘎 那是我弄错了 不过确实没接触过这个概念
2015-10-18 回复 有任何疑惑可以回复我~
查看2条回复

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

wswzh0329 提问者

..还是没明白。。继承不是类跟类之间的关系吗,被静态函数继承是什么意思? 我在eclipse上面试了,父类中有一个普通方法print和一个静态方法print2, 子类中什么都没写; 然后在测试类中创建了子类的对象,子类的对象能够调用print和print2,这是不是说明静态方法也能被继承?
2015-10-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530562    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信