Java靜態綁定和動態綁定

將方法調用連接到方法體稱爲綁定。

在java中有兩種類型的綁定:

  • 靜態綁定(也稱爲早期綁定)。
  • 動態綁定(也稱爲後期綁定)。

瞭解類型

下面讓我們來了解實例的類型。

1. 變量有一個類型

每個變量都有一個類型,它可能是原始的和非原始的。

int data=30;

這裏的數據變量是一個int類型。

2. 引用有一個類型

class Dog {
    public static void main(String args[]) {
        Dog d1;// Here d1 is a type of Dog
    }
}

2. 對象有一個類型

對象是特定的java類的實例,但它也是其超類的實例。

class Animal {
}

class Dog extends Animal {
    public static void main(String args[]) {
        Dog d1 = new Dog();
    }
}

這裏d1Dog類的一個實例,但它也是Animal的一個實例。

靜態綁定

當編譯時(由編譯器)確定對象的類型時,它被稱爲靜態綁定。如果在類中有任何privatefinalstatic方法,則有靜態綁定。

靜態綁定的示例

class Dog {
    private void eat() {
        System.out.println("dog is eating...");
    }

    public static void main(String args[]) {
        Dog d1 = new Dog();
        d1.eat();
    }
}

動態綁定

當在運行時確定對象的類型時,它被稱爲動態綁定。

動態綁定的示例

class Animal {
    void eat() {
        System.out.println("animal is eating...");
    }
}

class Dog extends Animal {
    void eat() {
        System.out.println("dog is eating...");
    }

    public static void main(String args[]) {
        Animal a = new Dog();
        a.eat();
    }
}

執行上面示例代碼輸出結果如下 -

dog is eating...

在上面的例子中,對象類型不能由編譯器決定,因爲Dog的實例也是Animal的一個實例。編譯器不知道它的類型,只知道它的基類型。