天天看點

Java中靜态方法不具有多态性

class a1 {

 public static void f() {

  system.out.println("a1.f()");

 }

}

class a2 extends a1 {

  system.out.println("a2.f()");

class t {

 public static void main(string[] args) {

  a1 a1 = new a1();

  a1 a2 = new a2();

  // 靜态方法不具有多态效果,它是根據引用聲明類型來調用

  a1.f();// a1.f()

  a2.f();// a1.f()

對靜态方法的調用不存在任何動态的分派機制。當一個程式調用了一個靜态方法,要被調用的方法都是在編譯時就被標明的,即調用哪個方法是根據該引用被聲明的類型決定的。上面程式中a1與a2引用的類型都是a1類型,是以調用的是a1中的f()方法。

原帖位址:http://jiangzhengjun.iteye.com/blog/652748