<track id="p1jc3"><source id="p1jc3"><em id="p1jc3"></em></source></track>
<bdo id="p1jc3"><address id="p1jc3"><dd id="p1jc3"></dd></address></bdo>
<menuitem id="p1jc3"><optgroup id="p1jc3"><dd id="p1jc3"></dd></optgroup></menuitem>

    1. <track id="p1jc3"><div id="p1jc3"></div></track>
        <track id="p1jc3"></track>
      1. <track id="p1jc3"><span id="p1jc3"></span></track>
        <track id="p1jc3"></track>

      2. <track id="p1jc3"><span id="p1jc3"></span></track>

        <menuitem id="p1jc3"></menuitem><menuitem id="p1jc3"></menuitem>

            云狐網

            您現在的位置是:首頁 > IT問答

            IT問答

            什么是多態,多態分類,多態主要作用

            云狐科技 2022-12-22 23:30:27IT問答

            多態指同一個實體同時具有多種形式。它是面向對象程序設計(OOP)的一個重要特征。如果一個語言只支持類而不支持多態,只能說明它是基于對象的,而不是面向對象的。C++中的多態性具體體現在運行和編譯兩個方面。運行時多態是動態多態,其具體引用的對象在運行時才能確定。編譯時多態是靜態多態,在編譯時就可以確定對象使用的形式。同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            什么是多態

            多態按字面的意思就是“多種狀態”。在面向對象語言中,接口的多種不同的實現方式即為多態。引用 Charlie Calverts 對多態的描述——多態性是允許你將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之后,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。多態性在 Object Pascal 和 C++中都是通過虛函數(Virtual Function)實現的。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            多態:同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            C++中,實現多態有以下方法:虛函數,抽象類,重載,覆蓋,模版。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            多態也指生物學中腔腸動物的特殊的生活方式。水螅態與水母態的世代交替現象。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            多態分類

            動態多態(dynamic polymorphism):通過類繼承機制和虛函數機制生效于運行期。可以優雅地處理異質對象集合,只要其共同的基類定義了虛函數的接口。也被稱為子類型多態(Subtype polymorphism)或包含多態(inclusion polymorphism)。在面向對象程序設計中,這被直接稱為多態。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            靜態多態(static polymorphism):模板也允許將不同的特殊行為和單個泛化記號相關聯,由于這種關聯處理于編譯期而非運行期,因此被稱為“靜態”。可以用來實現類型安全、運行高效的同質對象集合操作。C++STL 不采用動態多態來實現就是個例子。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            函數重載(Function Overloading)yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            運算符重載(Operator Overloading)yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            帶變量的宏多態(macro polymorphism)yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            參數化多態(Parametric polymorphism):把類型作為參數的多態。在面向對象程序設計中,這被稱作泛型編程。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            對于 C++語言,帶變量的宏和函數重載(function overload)機制也允許將不同的特殊行為和單個泛化記號相關聯。然而,習慣上并不將這種函數多態(function polymorphism)、宏多態(macro polymorphism)展現出來的行為稱為多態(或靜態多態),否則就連 C 語言也具有宏多態了。談及多態時,默認就是指動態多態,而靜態多態則是指基于模板的多態yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            多態主要作用

            把不同的子類對象都當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            賦值之后,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。也就是說,父親的行為像兒子,而不是兒子的行為像父親。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            舉個例子:從一個基類中派生,響應一個虛命令,產生不同的結果。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            比如從某個基類繼承出多個對象,其基類有一個虛方法 Tdoit,然后其子類也有這個方法,但行為不同,然后這些子對象中的任何一個可以賦給其基類對象的引用,或者將子對象地址賦給基類指針,這樣其基類的對象就可以執行不同的操作了。實際上你是在通過其基類來訪問其子對象的,你要做的就是一個賦值操作。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            使用繼承性的結果就是可以創建一個類的家族,在認識這個類的家族時,就是把導出類的對象當作基類的對象,這種認識又叫作 upcasting。這樣認識的重要性在于:可以只針對基類寫出一段程序,但它可以適應于這個類的家族,因為編譯器會自動就找出合適的對象來執行操作。這種現象又稱為多態性。而實現多態性的手段又叫稱動態綁定(dynamic binding)。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            簡單的說,建立一個父類的對象,它的內容可以是這個父類的,也可以是它的子類的,當子類擁有和父類同樣的函數,當使用這個對象調用這個函數的時候,定義這個對象的類(也就是父類)里的同名函數將被調用,當在父類里的這個函數前加 virtual 關鍵字,那么子類的同名函數將被調用。yor電腦_數碼_手機應用問題解決的IT技術網站 - 云狐網

            <track id="p1jc3"><source id="p1jc3"><em id="p1jc3"></em></source></track>
            <bdo id="p1jc3"><address id="p1jc3"><dd id="p1jc3"></dd></address></bdo>
            <menuitem id="p1jc3"><optgroup id="p1jc3"><dd id="p1jc3"></dd></optgroup></menuitem>

              1. <track id="p1jc3"><div id="p1jc3"></div></track>
                  <track id="p1jc3"></track>
                1. <track id="p1jc3"><span id="p1jc3"></span></track>
                  <track id="p1jc3"></track>

                2. <track id="p1jc3"><span id="p1jc3"></span></track>

                  <menuitem id="p1jc3"></menuitem><menuitem id="p1jc3"></menuitem>

                      阿娇13分49秒无删减版