綁定指方法調用與方法所屬類(方法主體)的關聯。Java 分為:
final、static、private、建構子屬此類。動態綁定是 Java 多態的基石。例:
Parent p = new Child(); p.method(); // 編譯看 Parent,執行看 Child
public interface MyInterface { void doThing(); }
public class Eat implements MyInterface {
public void doThing() => System.out.println("我在吃東西");
}
public class Drink implements MyInterface {
public void doThing() => System.out.println("我在喝水");
}
public class Run implements MyInterface {
public void doThing() => System.out.println("我在奔跑");
}
public class TestDynamicBind {
public static void main(String[] args) {
MyInterface mi = null;
mi = new Eat(); bind(mi);
mi = new Drink(); bind(mi);
mi = new Run(); bind(mi);
}
static void bind(MyInterface mi) { mi.doThing(); }
}
輸出:
我在吃東西 我在喝水 我在奔跑
private 方法隱式 final,不可被覆寫,屬靜態綁定。final 可提升效能(JIT 內聯優化),且防止被覆寫。virtual 開啟動態綁定,Java 預設開啟。