搜尋
首頁JavaJava基礎java如何實現多型

java如何實現多型

Dec 04, 2019 am 11:48 AM
java多態性

java如何實現多型

Java多態概述:(建議:java視訊教學

多態是物件導向程式語言的重要特性,它允許基類別的指標或引用指向衍生類別的對象,而在特定存取時實作方法的動態綁定。 Java 對於方法呼叫動態綁定的實作主要依賴方法表,但透過類別參考呼叫(invokevitual)和介面參考呼叫(invokeinterface)的實作則有所不同。

java中實作多態需要三個條件:

1、需要有繼承關係的存在。

2、需要有方法的重寫。

3、需要有父類別的參考指向子類別物件。

類別引用呼叫的大致過程為:Java編譯器將Java原始碼編譯成class文件,在編譯過程中,會根據靜態型別將呼叫的符號參考寫到class文件中。

在執行時,JVM根據class檔案找到呼叫方法的符號引用,然後在靜態類型的方法表中找到偏移量,然後根據this指標確定物件的實際類型,使用實際類型的方法表,偏移量跟靜態類型中方法表的偏移量一樣,如果在實際類型的方法表中找到該方法,則直接調用,否則,認為沒有重寫父類該方法。依照繼承關係從下往上搜尋。

java如何實現多型

從上圖可以看出,當程式運作時,需要某個類別時,類別載入子系統會將對應的class檔案載入到JVM中,並且在內部建立該類別的類型資訊(這個類型資訊其實就是class檔案在JVM中儲存的一種資料結構),包含java類別定義的所有信息,包括方法代碼,類別變數、成員變數、以及本博文要重點討論的方法表。這個類型資訊就儲存在方法區。 

注意,這個方法區中的型別資訊跟在堆中存放的class物件是不同的。在方法區中,這個class的型別資訊只有唯一的實例(所以是各個執行緒共享的記憶體區域),而在堆中可以有多個該class物件。可以透過堆中的class物件存取到方法區中類型資訊。就像在java反射機制那樣,透過class物件可以存取到該類別的所有資訊一樣。

更多java知識請關注java基礎教學欄。

以上是java如何實現多型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)