多態的理解

來源:互聯網
上載者:User

         多態對於基礎不太好的同學不太好理解,下面談談我對它的認識。它和繼承是相對的,繼承是子類調用父類,多態則是父類使用子類。在繼承中子類可以使用父類中公有的方法和屬性等,而在多態中,簡單的說,建立一個父類的對象,它的內容可以是這個父類的,也可以是它的子類的,當子類擁有和父類同樣的函數,當使用這個對象調用這個函數的時候,定義這個對象的類(也就是父類)裡的同名函數將被調用,當在父類裡的這個函數前加virtual關鍵字或父類為一個介面,那麼子類的同名函數將被調用。


下邊是一段C#代碼來解釋多態


class Test    {          staticvoid Main(string[]args)          {              Testtt = new Test();              tt.PlayVideo();           } public voidPlayVideo()          {              videoShowvw;              vw=newDVD() ;              Console.WriteLine(vw.PlayVideo());              vw = newVCD();              Console.WriteLine(vw.PlayVideo());           } } public abstractclass videoShow      {          publicabstract stringPlayVideo();      }      public class VCD : videoShow      {          publicoverride stringPlayVideo()          {              return"現正播放VCD";          }      }      public class DVD : videoShow      {          publicoverride stringPlayVideo()          {              return"現正播放DVD";          }      }

     

         在上面的代碼中我們使用父類videoShow執行個體化了一個對象vw,在下面我們使用父類的對象調用了子類中的方法PlayVideo。

 

由多態我們還引出了向上轉型和向下轉型的概念:

向下轉型:父類不一定能轉成子類類型 

向上轉型:子類一定能轉成父類類型


舉一個形象的例子就是:

多態:   java程式員包括j2se的,J2ee的,j2me的。 

向上轉型:   j2ee的   轉成   java程式員 

向下轉型:   java程式員   轉成   j2ee的




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.