码迷,mamicode.com
首页 > 其他好文 > 详细

关于接口、抽象、普通类之间的选择

时间:2017-10-01 13:04:07      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:作者   方法   pad   描述   思想   使用   最大的   like   强制   

 

在学习设计模式的时候,会经常看到在接口与抽象类之间、普通类与抽象类之间的选择;

在这之前作者也已“深入”学习过,但每次实际运用的过程总会陷入两难的境地,后来发现之所以会这样,是因为自己把它们想得太复杂了。

 

抽象类与接口

抽象类使用extend;

接口使用implement;

这是他俩最大的区别之一,也是我们在实际选择时考虑的第一要素:接口可以多实现,利于扩展,所以优先使用接口。

 

抽象类可以拥有普通成员(属性、方法);

接口则只有abstract成员;

这是他俩最大区别之二,是我们考虑的第二要素:如果你的设计需要用到普通成员,那么只能选择抽象类。

 

综上所述,你应该优先选择接口,除非要用到普通成员才选择抽象类;

 

搞明白了语法,再往思想上延伸才会更容易:

extend翻译成中文就是继承,描述的是类与类之间的整体关系,比如喜鹊是飞行类动物,也就是is a;

implement是实现的意思,描述的是类与行为的局部关系,比如喜鹊可以实现飞行接口,就是like a;

现在可以想想,喜鹊和飞机都能飞,在设计上,我们把飞设计为抽象类还是接口好呢?(友情提示:飞是一种局部行为)

 

 

 

抽象类与普通类

 抽象类可以拥有abstract成员,这是他俩最大的区别:在继承的时候abstract方法是必须重写的。

所以,在使用继承的时候如果需要某些方法强制子类重写,那就使用抽象类,否则就使用普通类(简单优先)。

 

关于接口、抽象、普通类之间的选择

标签:作者   方法   pad   描述   思想   使用   最大的   like   强制   

原文地址:http://www.cnblogs.com/dahuandan/p/7616944.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!