閱讀484 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

class A1 {
 public static void f() {
  System.out.println("A1.f()");
 }
}
class A2 extends A1 {
 public static void f() {
  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()方法。

原帖地址:https://jiangzhengjun.iteye.com/blog/652748

最後更新:2017-04-03 08:26:22

  上一篇:go 第三章:什麼是組織結構
  下一篇:go DbHelper-SQL數據庫訪問助手