多態的四種布控形式

來源:互聯網
上載者:User

多態,不同的對象收到同一訊息可以產生不同的結果,這種現象叫做多態。

多態的布控形式:多重參數變形,包含多態,過載多態,強制多態。其中前兩者稱為通用多態,後兩者稱為特定多態。

強制多態(coercion)

編譯器通過語義操作,把操作對象的類型強行加以變換,以符合函數或操作符的要求。程式設計語言中基本類型的大多數操作符,在發生不同類型的資料進行混合運算時,

編譯器一般都會進行強制多態。程式員也可以顯示地進行強制多態的操作(Casting)。

要注意的是並不是任意兩個類型之間都可以進行強制多態。在不同類型之間實現強制多態,通常需要執行不同的轉換操作。強制多態的原則是:將值集較小(即佔用儲存空間較小)的類型,變換成值集包含了前者(即佔用儲存空間較大)的類型,反之,應當注意可能發生的對值的損傷(特別是在使用Casting時)。

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

 

包含多態(inclusion) 同樣的操作可用於一個類型及其子類型。(注意是子類型,不是子類。)包含多態一般需要進行運行時的類型檢查。如Pascal中的子界。幾點需要注意的地方: 1.包含多態的操作存在著逆單調(Anti-mornotonic)。即一個類型t上的操作,當其定義域縮小成t的一個子類型時,其範圍應不小於t. 多重參數變形(parametric)採用參數化模板,通過給出不同的型別參數,使得一個結構有多種類型。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.