多態性是一個概念,借助它可以以不同的方式執行單一操作。它源自於兩個希臘文:poly 和 morphs。 「poly」意味著許多,「morphs」意味著形式。從此,多態性意味著多種形式。物件導向程式設計可以定義為程式語言根據物件的類別或資料類型以不同方式處理物件的能力。基本上,我們可以將其定義為衍生類別重新定義方法的能力。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
理解
多態性有兩種:編譯時多態性與執行時多態性。編譯時多態性透過方法重載實現,運行時多態性透過方法重寫實現。運行時多態性,也稱為動態方法分派,是一個過程,其中對重寫方法的呼叫在運行時解析,儘管在編譯時。這裡,被重寫的方法是透過父類別的引用變數來呼叫的。另外,運行時多態性無法透過資料成員實現。
多態如何讓工作變得如此簡單?
它是物件導向的程式設計特性。使用多態性,即使類別具有公共接口,也可以表現出不同的功能。因此,我們可以說這個長期術語解釋了一個基本概念。多態性值得注意的是,各個類別中的所有工作代碼都不需要知道其所使用的類,因為它們的使用方式是相同的。
它是物件導向的程式設計特性。使用多態性,即使類別具有公共接口,也可以表現出不同的功能。因此,我們可以說這個長期術語解釋了一個非常基本的概念。值得注意的是,各個類別中的所有工作代碼都不需要知道其所使用的類,因為它們的使用方式是相同的。
考慮多態性的現實場景。舉一個按鈕的例子。我們知道透過施加一些壓力可以點擊按鈕,但是我們不知道按下按鈕的輸出或其使用的參考。這裡要注意的是,無論哪種方式,結果都不會影響它的使用方式。
所以它的基本目標是根據需要製作可互換的物件。
多態可以做什麼?
當子類別具有與父類別中宣告的方法相同的方法時,我們稱之為方法重寫。
或者換句話說,如果子類別提供了其父類別已聲明的方法的實現,則稱為方法重寫。在方法重寫中需要記住的一些事情是:
- 該方法必須與父類別中提到的方法具有相同的名稱
- 此方法也必須具有與父類別中提到的參數相同的參數。
- 一定有繼承,即IS-A關係。
使用多態性?
當一個類別有多個名稱相同但參數不同的方法時,稱為方法重載。
假設我們只需要執行一項操作,那麼與方法同名會增加程式的可讀性。 Java中重載方法的方法是:
- 更改參數數量
- 更改資料類型
但是在Java中,僅僅改變方法的回傳類型是不行的。
優點
- 它可以幫助程式設計師重複使用曾經編寫的程式碼和類別來進行測試和實作。 (程式碼的可重用性)
- 單一變數名稱可以儲存多種資料型別的變數(int、float、double、long等)。
- 增加程式的可讀性。
為什麼要用多態性?
除了動態多態和靜態多態之外,一些Java程式特性也表現出兩種主要類型之外的多態性。
這些是 – 強制、多型參數和運算子重載
強制
讓我們用一個很簡單的例子來理解強制轉換。考慮一個值為「強制類別:」的字串。考慮另一個值為 1 的整數。現在,當您將字串值與整數值連接時會發生什麼?此串聯的輸出將是「強制類別:1」。這就是所謂的強制。進行隱式類型轉換是為了防止類型錯誤。編譯器會做到這一點。
運算子重載
在開始介紹運算子重載(也稱為方法重載)之前,讓我們先來看一個範例。考慮一個值為「Operator」的字串和另一個值為「Overloading」的字串。對這兩個字串使用加號 (+),就像增加兩個整數一樣。 (+) 將連接這兩個字串。如果是兩個整數,則傳回兩個整數總和。當一個符號或運算子能夠根據其使用方式改變其意義時,所表現出的多態性類型稱為運算子重載。
參數
在多態性中,一個物件可能以多種形式出現。在 Java 中,它指的是允許透過以下方式之一存取對象,例如 –
1.使用其父類別或超類別的引用變數
2.使用它所在類別的引用變數。
為什麼我們需要多態性?
需要多態的主要原因是這個概念廣泛用於實現繼承。它在允許物件具有不同的內部結構並共享相同的外部介面方面發揮著重要作用。它被明確指出為許多人所映射的。
範圍
綁定是將方法呼叫連接到方法體。我們有兩種類型的綁定。
靜態綁定(早期綁定): 在編譯時決定物件的類型。
動態綁定(後期綁定):當運行時確定物件的類型時。
結論
因此它被認為是物件導向程式設計的非常重要的特性之一。如果你談論一個現實生活中的多態性例子,它可能是一個人在同一時間可以有不同的特徵;例如,一個男人同時是兒子、丈夫、僱員。所以同一個人在不同的情況下會表現出不同的行為。用物件導向的術語來說,這稱為多態性,是物件導向程式設計的重要特徵。
以上是什麼是多態性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),