面向对象之多态性(基类引用可以指向子类)
1、派生類的對象和基類是屬于的關系,即 對象 is a X類,對象屬于X類。
2、多態性的概念:
了解多態性之前,要熟悉引用和對象的區別:
對象存儲在堆中,引用(符)存儲在棧中,引用符的值是對象在堆中的地址,因此通過引用符可以輕松地找到對象。
一般情況下,引用符和對象屬于同一類型,基類的引用指向基類的對象,派生類的引用指向派生類的對象,但是我們知道,派生類對象也屬于基類,所以基類引用符可以指向派生類對象。
? 一個基類的引用符,可以指向多種派生類對象,具有多種不同的形態,這種現象叫多態性。這種方式經常用作設計模式中的工廠模式。
3、接口
接口實際上就是一個類,只是這個類只聲明成員,而不具體實現。故不能創建接口的實例,繼承自接口的類必須實現接口的所有方法。接口也能很好的體現多態性,當函數中參數類型為基接口時,則不管是什么類,只要這個類繼承于基接口,均可以根據實例化情況來調用。
4、接口、抽象類的相似之處和不同:
接口和抽象類均不能實例化,而且要求派生類實現其抽象方法,但不是必須全部實現。
但抽象類有更多的功能:可以由子類繼承,而且可以包括狀態數據和具體方法。
5、接口和類的區別:
接口不能從類繼承,而類可以實現接口(繼承接口);
接口可以繼承多個接口,而類雖然可以繼承多個接口,卻只能繼承一個類。
接口成員必須是方法、成員屬性、事件或索引器。(注意無數據成員)
所有接口成員必須能公開訪問。
6、用類?用接口?
當決定使用類還是接口類型,即查看類型與繼承子類之間的關系。接口為類定義一種行為,即它“能做什么”,它允許對象創建自身的副本。另一方面,當繼承子類“一種”基類時,就應該使用類。例如:可以創建shape(形狀)作為基類,創建circle(圓)作為shape的子類,而將改變形狀大小的功能作為一個接口方法。
轉載于:https://www.cnblogs.com/dongzhiquan/archive/2011/11/05/2237159.html
總結
以上是生活随笔為你收集整理的面向对象之多态性(基类引用可以指向子类)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab数理统计工具箱应用简介
- 下一篇: 【一千个论文合集】计算机科学的26个细分