物件導向之多態性(基類引用可以指向子類)

來源:互聯網
上載者:User

1、衍生類別的對象和基類是屬於的關係,即 對象 is a X類,對象屬於X類。

2、多態性的概念:

瞭解多態性之前,要熟悉引用和對象的區別:

Object Storage Service在堆中,引用(符)儲存在棧中,引用符的值是對象在堆中的地址,因此通過引用符可以輕鬆地找到對象。

一般情況下,引用符和對象屬於同一類型,基類的引用指向基類的對象,衍生類別的引用指向衍生類別的對象,但是我們知道,衍生類別對象也屬於基類,所以基類引用符可以指向衍生類別對象。

  一個基類的引用符,可以指向多種衍生類別對象,具有多種不同的形態,這種現象叫多態性。這種方式經常用作設計模式中的原廠模式。

3、介面

介面實際上就是一個類,只是這個類只聲明成員,而不具體實現。故不能建立介面的執行個體,繼承自介面的類必須實現介面的所有方法。介面也能很好的體現多態性,當函數中參數類型為基底介面時,則不管是什麼類,只要這個類繼承於基底介面,均可以根據執行個體化情況來調用。

4、介面、抽象類別的相似之處和不同:

介面和抽象類別均不能執行個體化,而且要求衍生類別實現其抽象方法,但不是必須全部實現。

但抽象類別有更多的功能:可以由子類繼承,而且可以包括狀態資料和具體方法。

5、介面和類的區別:

介面不能從類繼承,而類可以實現介面(繼承介面);

介面可以繼承多個介面,而類雖然可以繼承多個介面,卻只能繼承一個類。

介面成員必須是方法、成員屬性、事件或索引器。(注意無資料成員)

所有介面成員必須能公開訪問。

6、用類?用介面?

當決定使用類還是介面類型,即查看類型與繼承子類之間的關係。介面為類定義一種行為,即它“能做什麼”,它允許對象建立自身的副本。另一方面,當繼承子類“一種”基類時,就應該使用類。例如:可以建立shape(形狀)作為基類,建立circle(圓)作為shape的子類,而將改變形狀大小的功能作為一個介面方法。

聯繫我們

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