首頁 > Java > java教程 > 主體

Java中早期綁定和晚期綁定的區別

WBOY
發布: 2023-09-14 08:57:15
轉載
1066 人瀏覽過

Java中早期綁定和晚期綁定的區別

在物件導向程式設計中,官方是指將策略呼叫與其執行連結的方法。 Java是一種物件導向的程式語言,支援早期權威和晚期權威,分別稱為不活躍權威和活躍權威。兩種形式的綁定都有優點和應用。我們將在這篇文章中介紹 Java 中早期綁定和晚期綁定的語法、解釋以及差異。

文法

Java 中早期綁定的語法如下。

<ClassName> <objectName> = new <ClassName>();
登入後複製

Java 中後期綁定的語法如下。

<ClassName> <objectName> = new <DerivedClassName>();
登入後複製

語法解釋

類別的類型是在早期綁定的編譯時決定的,方法的實作是根據物件的指定類型來選擇的。這意味著編譯器知道物件的特定類,並且可以將方法呼叫直接與方法實作連結起來。

另一方面,後期綁定在運行時確定類別類型,並根據物件的實際類型選擇方法實現。這表示編譯器不知道物件的精確類,必須依賴執行時間環境來找到正確的方法實作。

方法一:早期綁定

在早期綁定中,方法呼叫在編譯時解析。讓我們考慮以下早期綁定演算法 -

  • 宣告一個名為 Shape 的類,並使用名為 draw() 的方法。

  • 建立一個名為 Circle 的子類別來擴充 Shape 類別。

  • 在Circle類別中實作draw()方法。

  • 使用早期綁定建立 Circle 類別的物件。

  • 呼叫物件的draw()方法。

範例

class Shape {
   public void draw() {
      System.out.println("Drawing a shape");
   }
}

class Circle extends Shape {
   @Override
   public void draw() {
      System.out.println("Drawing a circle");
   }
}

public class Main {
   public static void main(String[] args) {
      Shape shape = new Circle();
      shape.draw();
   }
}
登入後複製

輸出

Drawing a circle
登入後複製

方法1中程式碼說明

我們有一個帶有 draw() 函數的 Shape 類,該函數在此程式碼中列印「繪製形狀」。我們還有一個 Circle 類,它擴展了 Shape 類別並重寫了 draw() 函數以輸出「繪製一個圓形」。在 Main 類別中,我們透過將其宣告為 Shape 類型,使用早期綁定建立了 Circle 類別的物件。當我們呼叫形狀物件的draw()函數時,結果將是「畫一個圓」。這是因為方法呼叫與建置時的 Circle 類別的實作相關聯。

方法 2:後期綁定

在後期綁定中,方法呼叫在運行時解析。讓我們考慮以下後期綁定演算法 -

  • 宣告一個名為 Animal 的類,並使用名為 makeSound() 的方法。

  • 建立兩個名為 Dog 和 Cat 的子類別來擴充 Animal 類別。

  • 在 Dog 和 Cat 類別中實作 makeSound() 方法。

  • 使用後期綁定建立 Dog 類別的物件。

  • 呼叫物件的 makeSound() 方法。

範例

class Animal {
   public void makeSound() {
      System.out.println("Animal makes a sound");
   }
}

class Dog extends Animal {
   @Override
   public void makeSound() {
      System.out.println("Dog barks");
   }
}

class Cat extends Animal {
   @Override
   public void makeSound() {
      System.out.println("Cat meows");
   }
}

public class Main {
   public static void main(String[] args) {
      Animal animal = new Dog();
      animal.makeSound();
   }
}
登入後複製

輸出

Dog barks
登入後複製

方法2中程式碼說明

在這段程式碼中,我們有一個 Animal 類,它有一個 makeSound() 方法,可以列印「Animal gets a sound」。我們還有兩個子類別 Dog 和 Cat,它們擴展 Animal 類別並重寫 makeSound() 方法以分別列印「Dog barks」和「Cat meows」。在 Main 類別中,我們使用後期綁定創建了 Dog 類別的對象,並將其宣告為 Animal 類型。當我們在動物物件上呼叫 makeSound() 方法時,輸出將是「Dog barks」。這是因為方法呼叫在運行時根據物件的實際類型綁定到 Dog 類別的實作。

Java 中早期綁定和後期綁定的差異

差異點

早期綁定

#後期綁定

#解析時間

編譯時間

運行時

方法實作

根據物件宣告的型別決定

根據物件的實際類型決定

靈活性

動態變更方法實作的彈性有限

透過動態方法分派和多型性提供彈性

#效能

由於方法呼叫在編譯時解析,因此效能更快

#由於方法呼叫在運行時解析,因此效能稍慢

#物件宣告

#物件宣告使用類別類型

#物件宣告使用衍生類別類型

結論

早期綁定和後期綁定是Java中兩個重要的概念,它們決定如何解析方法呼叫。後期綁定根據運行時物件的​​實際類型解析方法調用,而早期綁定則在編譯時將方法調用連結到其實現。每種方法都有其獨特的優點和用途。儘管早期綁定提供了更好的效能,因為方法呼叫是在編譯時解析的,但它不允許對方法實作進行動態變更。另一方面,後期綁定允許動態方法分派,從而實現方法呼叫的多態性和靈活性。了解早期綁定和後期綁定之間的差異對於編寫高效且靈活的 Java 程式至關重要。

以上是Java中早期綁定和晚期綁定的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!