1. 程式人生 > 實用技巧 >Java 動靜態繫結

Java 動靜態繫結

動態繫結:可以使多型更加靈活。

向上轉型:父類物件的引用指向子類物件。隱式轉換。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"); } }

輸出: