首頁 > Java > java教程 > 什麼是多態性?

什麼是多態性?

王林
發布: 2024-08-30 15:43:29
原創
1026 人瀏覽過

多態性是一個概念,借助它可以以不同的方式執行單一操作。它源自於兩個希臘文:poly 和 morphs。 「poly」意味著許多,「morphs」意味著形式。從此,多態性意味著多種形式。物件導向程式設計可以定義為程式語言根據物件的類別或資料類型以不同方式處理物件的能力。基本上,我們可以將其定義為衍生類別重新定義方法的能力。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

理解

多態性有兩種:編譯時多態性與執行時多態性。編譯時多態性透過方法重載實現,運行時多態性透過方法重寫實現。運行時多態性,也稱為動態方法分派,是一個過程,其中對重寫方法的呼叫在運行時解析,儘管在編譯時。這裡,被重寫的方法是透過父類別的引用變數來呼叫的。另外,運行時多態性無法透過資料成員實現。

多態如何讓工作變得如此簡單?

它是物件導向的程式設計特性。使用多態性,即使類別具有公共接口,也可以表現出不同的功能。因此,我們可以說這個長期術語解釋了一個基本概念。多態性值得注意的是,各個類別中的所有工作代碼都不需要知道其所使用的類,因為它們的使用方式是相同的。

它是物件導向的程式設計特性。使用多態性,即使類別具有公共接口,也可以表現出不同的功能。因此,我們可以說這個長期術語解釋了一個非常基本的概念。值得注意的是,各個類別中的所有工作代碼都不需要知道其所使用的類,因為它們的使用方式是相同的。

考慮多態性的現實場景。舉一個按鈕的例子。我們知道透過施加一些壓力可以點擊按鈕,但是我們不知道按下按鈕的輸出或其使用的參考。這裡要注意的是,無論哪種方式,結果都不會影響它的使用方式。

所以它的基本目標是根據需要製作可互換的物件。

多態可以做什麼?

當子類別具有與父類別中宣告的方法相同的方法時,我們稱之為方法重寫。

或者換句話說,如果子類別提供了其父類別已聲明的方法的實現,則稱為方法重寫。在方法重寫中需要記住的一些事情是:

  • 該方法必須與父類別中提到的方法具有相同的名稱
  • 此方法也必須具有與父類別中提到的參數相同的參數。
  • 一定有繼承,即IS-A關係。

使用多態性?

當一個類別有多個名稱相同但參數不同的方法時,稱為方法重載。

假設我們只需要執行一項操作,那麼與方法同名會增加程式的可讀性。 Java中重載方法的方法是:

  • 更改參數數量
  • 更改資料類型

但是在Java中,僅僅改變方法的回傳類型是不行的。

優點

  • 它可以幫助程式設計師重複使用曾經編寫的程式碼和類別來進行測試和實作。 (程式碼的可重用性)
  • 單一變數名稱可以儲存多種資料型別的變數(int、float、double、long等)。
  • 增加程式的可讀性。

為什麼要用多態性?

除了動態多態和靜態多態之外,一些Java程式特性也表現出兩種主要類型之外的多態性。

這些是 – 強制、多型參數和運算子重載

強制

讓我們用一個很簡單的例子來理解強制轉換。考慮一個值為「強制類別:」的字串。考慮另一個值為 1 的整數。現在,當您將字串值與整數值連接時會發生什麼?此串聯的輸出將是「強制類別:1」。這就是所謂的強制。進行隱式類型轉換是為了防止類型錯誤。編譯器會做到這一點。

運算子重載

在開始介紹運算子重載(也稱為方法重載)之前,讓我們先來看一個範例。考慮一個值為「Operator」的字串和另一個值為「Overloading」的字串。對這兩個字串使用加號 (+),就像增加兩個整數一樣。 (+) 將連接這兩個字串。如果是兩個整數,則傳回兩個整數總和。當一個符號或運算子能夠根據其使用方式改變其意義時,所表現出的多態性類型稱為運算子重載。

參數

在多態性中,一個物件可能以多種形式出現。在 Java 中,它指的是允許透過以下方式之一存取對象,例如 –

1.使用其父類別或超類別的引用變數

2.使用它所在類別的引用變數。

為什麼我們需要多態性?

需要多態的主要原因是這個概念廣泛用於實現繼承。它在允許物件具有不同的內部結構並共享相同的外部介面方面發揮著重要作用。它被明確指出為許多人所映射的。

範圍

綁定是將方法呼叫連接到方法體。我們有兩種類型的綁定。

靜態綁定(早期綁定): 在編譯時決定物件的類型。

動態綁定(後期綁定):當運行時確定物件的類型時。

結論

因此它被認為是物件導向程式設計的非常重要的特性之一。如果你談論一個現實生活中的多態性例子,它可能是一個人在同一時間可以有不同的特徵;例如,一個男人同時是兒子、丈夫、僱員。所以同一個人在不同的情況下會表現出不同的行為。用物件導向的術語來說,這稱為多態性,是物件導向程式設計的重要特徵。

以上是什麼是多態性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板