在物件導向程式設計中,官方是指將策略呼叫與其執行連結的方法。 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
我們有一個帶有 draw() 函數的 Shape 類,該函數在此程式碼中列印「繪製形狀」。我們還有一個 Circle 類,它擴展了 Shape 類別並重寫了 draw() 函數以輸出「繪製一個圓形」。在 Main 類別中,我們透過將其宣告為 Shape 類型,使用早期綁定建立了 Circle 類別的物件。當我們呼叫形狀物件的draw()函數時,結果將是「畫一個圓」。這是因為方法呼叫與建置時的 Circle 類別的實作相關聯。
在後期綁定中,方法呼叫在運行時解析。讓我們考慮以下後期綁定演算法 -
宣告一個名為 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
在這段程式碼中,我們有一個 Animal 類,它有一個 makeSound() 方法,可以列印「Animal gets a sound」。我們還有兩個子類別 Dog 和 Cat,它們擴展 Animal 類別並重寫 makeSound() 方法以分別列印「Dog barks」和「Cat meows」。在 Main 類別中,我們使用後期綁定創建了 Dog 類別的對象,並將其宣告為 Animal 類型。當我們在動物物件上呼叫 makeSound() 方法時,輸出將是「Dog barks」。這是因為方法呼叫在運行時根據物件的實際類型綁定到 Dog 類別的實作。
差異點 |
早期綁定 |
#後期綁定 |
---|---|---|
#解析時間 |
編譯時間 |
運行時 |
方法實作 |
根據物件宣告的型別決定 |
根據物件的實際類型決定 |
靈活性 |
動態變更方法實作的彈性有限 |
透過動態方法分派和多型性提供彈性 |
#效能 |
由於方法呼叫在編譯時解析,因此效能更快 |
#由於方法呼叫在運行時解析,因此效能稍慢 |
#物件宣告 |
#物件宣告使用類別類型 |
#物件宣告使用衍生類別類型 |
早期綁定和後期綁定是Java中兩個重要的概念,它們決定如何解析方法呼叫。後期綁定根據運行時物件的實際類型解析方法調用,而早期綁定則在編譯時將方法調用連結到其實現。每種方法都有其獨特的優點和用途。儘管早期綁定提供了更好的效能,因為方法呼叫是在編譯時解析的,但它不允許對方法實作進行動態變更。另一方面,後期綁定允許動態方法分派,從而實現方法呼叫的多態性和靈活性。了解早期綁定和後期綁定之間的差異對於編寫高效且靈活的 Java 程式至關重要。
以上是Java中早期綁定和晚期綁定的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!