今天我在看孙卫琴写的JAVA面向对象编程的时候,他写到public static main(String[] args){}
可以在这个方法前用final修饰,因为static 修饰的方自动为final.但是他在后面讲继承的时候又讲到静态方法的覆盖,如果为常不是不能覆盖吗????我现在有点弄不明白了,请高手指点:
static修饰的方法是不自动为final?????????

解决方案 »

  1.   

    我没看过那本书。但如果他真那么说的,那就是他错了。事实是,一个 static 的 method 是可以被 override 的,所以,不存在“自动为 final”的问题。BTW: 我不是小孩,也不算聪明~~  8-)
      

  2.   

    是的,static 的方法是可以被覆盖的
    除非你加了final,不存在说static 默认为final的说法
      

  3.   

    up,还没听说能自动final的,那本书老多错了,丫出书也不严谨,该批死!!
      

  4.   

    如果为常不是不能覆盖吗????
    ----------------------------
    对,final修饰方法的时候不可以覆盖。
    但是static方法不一定是final的啊
      

  5.   

    main函数本身是jdk提供的 是final函数但是被static修饰的确实未必是final函数呀没看孙大妈的书,不知道是她说错了还是你理解不到位
      

  6.   

    maquan('ma:kju):
    太不厚道~
    穿5个裤衩了都不告诉我一声
      

  7.   

    忍不住说几句:
    孙位琴说的是对的~~
    Thinging in java也有提到过
    static 方法确实隐含的设置为final方法~~
    如果方法设置为了static后,想在子类覆盖static方法,只是相当于在子类写了一个新方法,而不是覆盖给你们展示个例子(去掉static后,结果会不同)
    class  dd
    {
    public static   void f()
    {
    System.out.println("sdfdsf");
    }

    }
    public class df extends dd
    {
    public static  void f()
    {
    System.out.println("abc");
    }
    public static void main(String[] args) 
    {
    dd a=new df();
    a.f();
    }}
      

  8.   

    > static 方法确实隐含的设置为final方法~~
    > 如果方法设置为了static后,想在子类覆盖static方法,
    > 只是相当于在子类写了一个新方法,而不是覆盖哦~~ 原来是这样,受教了  :)看来是“隐含为 final”的说法造成了误解。如果真的是 final 的话,连“新方法”都不能定义的。
      

  9.   

    > maquan('ma:kju):
    > 太不厚道~
    > 穿5个裤衩了都不告诉我一声哈哈,我也刚注意到,估计是昨天升级的  :D
    你也很快了吧?
      

  10.   

    static方法不能被覆盖,但是可以被隐藏
      

  11.   

    如果隐含设置为了final
      那么我直接加上怎么不行
    子类的方法会有出错提示...
    不能重写该方法
      前辈指点下了...