鍍金池/ 教程/ Java/ Java靜態(tài)綁定和動態(tài)綁定
Java for循環(huán)
Java接口
Java是什么?
Java命名約定
java中方法重載和方法重寫的區(qū)別
Java運(yùn)算符
Java抽象類
Java快速入門
Java實(shí)例初始化程序塊
Java靜態(tài)綁定和動態(tài)綁定
Java do-while循環(huán)
Java對象克隆
Java Object類
Java聚合
Java繼承
Java this關(guān)鍵字
Java虛擬機(jī)內(nèi)部體系結(jié)構(gòu)
Java構(gòu)造器(構(gòu)造方法)
Eclipse安裝和配置
Java多態(tài)
Java方法重載
Java while循環(huán)
Java教程
Java按值調(diào)用和引用調(diào)用
Java strictfp關(guān)鍵字
Java封裝
Java語言特點(diǎn)
Java數(shù)組
Java instanceof運(yùn)算符
Java包裝類
Java命令行參數(shù)
Java包
Java面向?qū)ο螅∣OP)概念
簡單Java程序
Java基礎(chǔ)實(shí)例程序
Java對象和類
Java continue語句
Java抽象類和接口的區(qū)別
C++ VS Java比較
Java if/else語句
Java switch語句
Java歷史
Java變量和數(shù)據(jù)類型
安裝Java環(huán)境(Linux)
Java JDK安裝和配置
Hello Java程序的內(nèi)部細(xì)節(jié)
Java break語句
Java方法重寫
Java Unicode編碼系統(tǒng)
怎么樣開始學(xué)習(xí)Java編程?
對象和類之間的區(qū)別
Java訪問修飾符
Java super關(guān)鍵字
Java注釋
JDK,JRE和JVM之間的區(qū)別
Java final關(guān)鍵字
Java static關(guān)鍵字

Java靜態(tài)綁定和動態(tài)綁定

將方法調(diào)用連接到方法體稱為綁定。

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

  • 靜態(tài)綁定(也稱為早期綁定)。
  • 動態(tài)綁定(也稱為后期綁定)。

了解類型

下面讓我們來了解實(shí)例的類型。

1. 變量有一個(gè)類型

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

int data=30;

這里的數(shù)據(jù)變量是一個(gè)int類型。

2. 引用有一個(gè)類型

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

2. 對象有一個(gè)類型

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

class Animal {
}

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

這里d1Dog類的一個(gè)實(shí)例,但它也是Animal的一個(gè)實(shí)例。

靜態(tài)綁定

當(dāng)編譯時(shí)(由編譯器)確定對象的類型時(shí),它被稱為靜態(tài)綁定。如果在類中有任何private,finalstatic方法,則有靜態(tài)綁定。

靜態(tài)綁定的示例

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

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

動態(tài)綁定

當(dāng)在運(yùn)行時(shí)確定對象的類型時(shí),它被稱為動態(tài)綁定。

動態(tài)綁定的示例

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();
    }
}

執(zhí)行上面示例代碼輸出結(jié)果如下 -

dog is eating...

在上面的例子中,對象類型不能由編譯器決定,因?yàn)?code>Dog的實(shí)例也是Animal的一個(gè)實(shí)例。編譯器不知道它的類型,只知道它的基類型。