1多態能夠有屬性,接口只有方法html
2關鍵字不一樣,多態有靜態多態(abstract)和動態多態(virtual),靜態多態不能new()出本身,動態多態能夠;多態中能夠有本身的方法可設置不須要子類重寫,接口則否,htm
3.基於上述兩點發現,多態比接口更寬鬆,但有時因爲接口的單一使得很使用明確,別人用起來很方便.多態顯得太龐大.對象
根本不須要查看源代碼是如何實現的,這就是多態的好處.blog
能夠看 https://www.cnblogs.com/wl-blog/p/10361894.html 講的何時用接口繼承
我要問一個問題,喜鵲和老鷹均可以飛,這個飛的能力,我怎麼來實現呢?接口
XXX答:「在父類Bird中添加一個Fly方法不就行了~~」it
我再問:「好的,照你說的,企鵝繼承父類Bird,可是不能企鵝不能飛啊,這樣在父類Bird中添加Fly方法是否是不合適呢?」class
XXX答:「那就在能飛的鳥類中分別添加Fly方法不就能夠了嗎?」擴展
對,這樣是能夠,功能徹底能夠實現,但是這樣違背了面向對象開放封閉原則,下次我要再擴展一個鳥類好比貓頭鷹(Owl),我還要去源代碼中看下Fly是怎麼實現的,而後在Owl中再次添加Fly方法,相同的功能,重複的代碼,這樣是不合理的,程序也不便於擴展;程序
其次,若是我還要添加一個飛機類(Plane),我繼承Bird父類,合適嗎?
很顯然,不合適!因此咱們須要一種規則,那就是接口了,喜鵲,老鷹,飛機,我都實現這個接口,那就能夠飛了,而企鵝我不實現這個接口,它就不能飛~~