java之多型的型別

2021-07-14 23:01:31 字數 759 閱讀 5249

多型分為兩種:通用的多型和特定的多型。兩者的區別是前者對工作的型別不加限制,允許對不同型別的值執行相同的**;後者只對有限數量的型別有效,而且對不同型別的值可能要執行不同的**。

通用的多型又分為引數多型(parametric)和包含多型(inclusion);特定的多型分為過載多型(overloading)和強制多型(coercion)。

強制多型:編譯程式通過語義操作,把操作物件的型別強行加以變換,以符合函式或操作符的要求。程式語言中基本型別的大多數操作符,在發生不同型別的資料進行混合運算時,編譯程式一般都會進行強制多型。程式設計師也可以顯示地進行強制多型的操作(casting)。舉個例子,比如,int+double,編譯系統一般會把int轉換為double,然後執行double+double運算,這個int->double的轉換,就實現了強制多型,即可是隱式的,也可顯式轉換。

過載(overloading)多型:同乙個名(操作符﹑函式名)在不同的上下文中有不同的型別。程式語言中基本型別的大多數操作符都是過載多型的。通俗的**,就是c++中的函式過載。在此處中「overload」譯為「過載」,其實就是所謂的「過載」,也許「overload」就應翻譯為「過載,過載」吧,那「override」就只能是「覆蓋」了。

引數多型:採用引數化模板,通過給出不同的型別引數,使得乙個結構有多種型別。

包含多型:同樣的操作可用於乙個型別及其子型別。(注意是子型別,不是子類。)包含多型一般需要進行執行時的型別檢查。-----------------對於這個概念,我的理解是虛函式「virtual---override」機制。

java學習之多型

向上轉型是不需要進行強制型別轉換的,但是向上轉型會丟失精度。與向上轉型對應的乙個概念就是 向下轉型 所謂向下轉型,也就是說父類的物件可以轉換為子類物件,但是需要注意的是,這時則必須要進行強制的型別轉換。類似於人壓彈簧 一 向上轉型可以自動完成 二 向下轉型必須進行強制型別轉換。可以用instance...

Java學習之多型

原帖 多型 晚繫結。不要把函式過載理解為多型。因為多型是一種執行期的行為,不是編譯期的行為。多型 父型別的引用可以指向子型別的物件。比如 parent p new child 當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤 如果有,再去呼叫子類的該同名方法。注意此處,靜態...

Java學習之多型

多型 晚繫結。不要把函式過載理解為多型。因為多型是一種執行期的行為,不是編譯期的行為。多型 父型別的引用可以指向子型別的物件。比如 parent p new child 當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤 如果有,再去呼叫子類的該同名方法。注意此處,靜態sta...