`
renyanwei
  • 浏览: 70051 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

接口和抽象类应该各司其职 各尽所能

OOP 
阅读更多

很多初学者在理解接口和抽象类的区别的时候总是会混淆不清两者之间的区别,本人当然也是,于是乎,看着网上的教程说接口好,于是,滥用接口就开始了,完全抛弃抽象类的存在

 

其实不用一味的去理解他们之间的区别,他们之间有什么区别? 非要深入知道么,只要回答一个类可以实现多个接口却只能继承一个抽象类就可以了,没任何意义,本人觉得问这个问题的人就存在问题,应该这么问:接口用在哪里,抽象类又用在哪里,这样就比较好理解了

 

首先来看下这张图

 

从这张图上我们可以总结关键性几点

1.抽象类是一组具有同一类型的实体类的共有部分的提取

2.接口不关心实现它的实体类是否是同一类型,一只鸟和一架飞机都可以实现飞的接口,虽然它们八不着边

3.如果同一类型具有同一行为,那么应该考虑抽象类,如果不同类型具有同一行为,那么应该考虑接口

4.设计一个接口不应该偏向某一类型,否则会造成实现这个接口的其他类型必须实现不必要的方法

5.如果接口和抽象类存在冲突,应该首先考虑接口,也就是说把飞的方法放到接口里而不是抽象类里

 

下面看一个小实例

设计一只海鸥和一架波音飞机

 

由于这两个东西都能飞,首先我们设计一个接口

//能在天上飞的接口
public interface IFly
{
	void fly();
}

 设计到了两个类,鸟和飞机,我们也可以把他们抽象出来

//飞机的抽象类
public abstract class Phone
{
	//获取载客量
	abstract int getPassengerCount();
}
//鸟的抽象类
public abstract class Bird
{
	//获取性别 O__O
	abstract int getAge();
}

 然后把鸟生出来再把飞机造出来

//海鸥
public class Seagull extends Bird implements IFly
{
	public int getAge()
	{
		//公的母的你说了算 O(∩_∩)O哈哈~
	}
	public void fly()
	{
		//飞喽~~
	}
}

//波音
public class Boeing extends Phone implements IFly
{
	public int getPassengerCount()
	{
		//最少得能坐上七八个吧
	}
	public void fly()
	{
		//各位旅客,飞机已经起飞,请坐稳扶好
	}
}

 可以根据接口和抽象类写出更多鸟和飞机(造个骆驼就无能为力了)

最后自己总结:可以不用接口抽象类,但不要拿接口当抽象类,可以不OOP 但不要乱OOP

 

注:以上纯粹个人观点,如果大牛认为哪些不正确的话非常希望留下您的意见,谢谢了

3
1
分享到:
评论
3 楼 song1990919 2012-03-22  
比喻很生动,很好理解[b][/b]
2 楼 color4you 2008-10-29  
非常不错,参考!
1 楼 ay_guobo 2008-10-26  
加我个好友吧
老乡
呵呵
我是郑州的

相关推荐

    达内java学习笔记-总最全

    java学学习必备 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT...我们通过类来看待对象,类是对象的抽象。 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。

    Java学习笔记(必看经典)

    其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。 对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最好的。 对于对象的要求:高内聚、低耦合,这样容易...

    php面向对象全攻略 (一) 面向对象基础知识

    1.面向对象的概念 面向对象编程(Object ...其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。为编程人员敞开了一扇大门,使其编程的代码更简洁、更易于维护,并且具有更强的可重用性。有人说PHP 不是一个

    SunShine西餐厅创业策划书.docx

    服务于学生,应该提供最优质的服务,首先,要吸引学生的注意目光,让他们能在最短的时间来光顾本店,所运用的营销方法是多种途径的。 一、SWTO分析:学院现有一万三千几个师生,调查资料表明他们多消费用于饮食方面...

    基于P2P技术的多媒体网络会议模型

    该模型采用Chord协议组织节点和实现节点路由定位,将服务器的职能分布到P2P Overlay的各节点上,并根据节点的异构性将它们分为普通节点和超级节点,各节点根据自身能力各尽所能,使网络资源得到充分利用,可有效解决...

    中服SaaS管理软件有效打造信息化服务

    随着中小企业对信息化需求的日益增长,云计算成为互联网时代的关注焦点,这种租赁模式能够降低企业信息化实施成本,让企业根据自身业务情况和规模定制所需资源,并根据所需资源进行支付,令服务提供商各尽所能,用户...

    全面解析云计算在我国的发展态势及前景.doc

    云计算的服务模式,是将自给自足的IT自然经济转换为IT商品经济,可以让云计算的服务提供商各尽所能,用户各取所需。云计算最核心

    公司工资制度方案.doc

    第一条 按照公司经营理念和管理模式,遵照国家有关劳动人事管理政策和公司其他有关规章制度,特制定本方案。 第二章原则 第二条 按照各尽所能、按劳分配原则,坚持工资增长幅度不超过本公司经济效益增长幅度,职工...

Global site tag (gtag.js) - Google Analytics