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父类,合适吗?
很显然,不合适!因此咱们须要一种规则,那就是接口了,喜鹊,老鹰,飞机,我都实现这个接口,那就能够飞了,而企鹅我不实现这个接口,它就不能飞~~