It's not override. override in java supports dynamic binding.class A{
  void f(){System.out.println("A");}
  static void g(){System.out.println("A");}
}
class B extends A{
  void f(){System.out.println("B");}
  static void g(){System.out.println("A");}
}
public class Test{
public static void main(String[] args){
A a=new B();
a.f();
                  a.g();
}
}a.g() always binding to A. 

解决方案 »

  1.   

    sorry:class B extends A{
      void f(){System.out.println("B");}
      static void g(){System.out.println("B");}
    }
      

  2.   

    sorry,it should be the following:public class test extends testB{
      
     static String fenghua(String name)
     {
         String x="Jiantao Lu";
         return x;
     }
      
     public static void main(String args[])
     {
         test A=new test();     
         System.out.println(A.fenghua("man"));
     }
     
    }class testB {
     static String fenghua(String name){
      return name;
     }

    }
      

  3.   

    静态方法不能被覆盖,你的这种情况叫做“隐藏”。好像是Bill Venners用了一个鞋模子的例子非常形象地解释了静态方法。俺记不确切了,见谅:)
    一个类(Class)就好比一个鞋模子,其成员就是这个类的属性,什么地方长,什么地方扁这些特性都是这个鞋模子的特性。所有由这个模子做出来的鞋子呢?就是这个类的实例(object/instance),这些object的特性由何处而来?就是这模子的特性决定了这些对象的特性。
    而静态成员呢?也成为类成员。静态成员就好比是这个鞋模子上的一些附加的东西标签,比如说贴在模子上的标签。它只属于这模子。所有造出来的鞋会连标签也一同造出来吗?呵呵,当然不会。这点就可以理解类成员和实例成员的区别了。
    下面,俺们来使用这例子来理解派生类的问题。派生类是什么?派生类也是一个新的模子,依据原来的鞋模子制造的,可能会修改了一些属性。
    这里就很清楚了,新的模子同样也不会有原有鞋模的那个“标签”。呵呵,所以静态成员是不会被覆盖的。
    :)