形式上是可以被重写的,但是并不满足多态的特性。所以搞不清楚:静态方法可以被重写这句话是否正确。

解决方案 »

  1.   


    静态方法不能被重写,他是属于类级别的。一个类共用。所以,如果你一个类 A 其中有个静态方法 a ,子类B继承A,其中也有一个静态方法a,这两个并不是继承关系。 A t=new B();
      t.a();你觉得会调用哪个的a方法呢?可能你会认为是B的,错了,应该a,应该这里你是调用了类A的方法,而不是B的。
      

  2.   

    A.a()就是调用A类的B.a()就是调用B类的,Sun的编译器也不推荐用实例名去调用静态方法,会给出警告的.
    直接使用类名,不算多态吧.
      

  3.   

       通过父类使用子类时,即A a = new B(),A是B的父类;
       当调用父类实例的static方法时,同时此方法被子类隐藏,即子类与父类中同时存在这个static方法,这时调用的是父类的static方法,而不是子类的static方法;这不同于非static方法的调用,对于非static方法调用的是子类的方法,对于static方法的这种情况,叫做静态绑定.