Java 動靜態繫結
阿新 • • 發佈:2020-07-26
動態繫結:可以使多型更加靈活。
向上轉型:父類物件的引用指向子類物件。隱式轉換。Father f = new Son();
向下轉型:子類物件的引用指向父類物件。需顯式轉換。Father f = new Son(); Son s = (Son) f;
動態繫結:當虛擬機器呼叫一個例項方法時,他會基於物件實際的型別來選擇所呼叫的方法。是多型的一種。具體表現在向上轉型中。因為只有在執行時才知道具體執行的是哪個例項。(在執行時繫結)
public class Father{ public void say(){ System.out.println("This is Father"); }public static void main(String[] args){ Father f = new Son(); f.say(); } } class Son extends Father{ public void say(){ System.out.println("This is Son"); } }
輸出:
靜態繫結: 在編譯時繫結, 只有private、static、final是靜態繫結的
public class Father{ public void say1(){ System.out.println("This is Father 1"); } public void say2(){ System.out.println("This is Father 2"); } public static void main(String[] args){ Father f = new Son(); System.out.println("這是動態繫結 f.say1()"); f.say1(); System.out.println("這是靜態繫結 f.say2()"); f.say2(); } }class Son extends Father{ public void say1(){ System.out.println("This is Son 1"); } public static void say2() { System.out.println("This is Son 2"); } }
輸出: