黑马程序员技术交流社区

标题: 抽象类和接口的区别是什么?接口主要用来做什么? [打印本页]

作者: liuyj    时间: 2012-9-25 20:38
标题: 抽象类和接口的区别是什么?接口主要用来做什么?
抽象类和接口的区别是什么?接口主要用来做什么?
作者: 许庭洲    时间: 2012-9-26 09:52
1. abstract class 和interface都不能被直接实例化,都可以通过继承实现其抽象方法;
2.abstract class 不能实现多继承,interface支持多继承;
3.abstract class 可以定义行为,还可能提供实现,interface只能定义行为;
4.abstract class 不能实现回调,因为继承不支持,interface可以用于支持回调(CallBack);

作者: 郎乐乐    时间: 2012-9-26 12:06
个人通俗理解:
抽象:类就是你把一些相似的实例抽象出他们相同的地方,比如说狗,猫,等他们都属于动物有四条腿,这样你就可以抽象出一个类。
接口:是定义一组动作,狗,猫等都会叫那就可以定义一个叫的接口。
给你一个地址看看吧,介绍的很详细,主要还得自己理解了
http://www.cnblogs.com/lovemyth/archive/2008/09/08/828909.html
作者: 梁健1    时间: 2012-9-26 12:44
上次看了他们的回答,总结的:
1.抽象类单继承,接口多继承;
2.抽象类中可以有非抽象方法,接口中全部是抽象方法;
3.抽象类的子类可以选取实现部分抽象方法,但是接口必须实现全部抽象方法;
4.抽象类是规划了一类事物的特征,而接口是规划了一类事物的行为;
作者: 侍小波    时间: 2012-9-26 16:02
第一:接口和抽象类在语法上的区别主要体现在以下的几个方面:

a)一个类可以实现多个接口,二除了Object之外,一个类只能有一个父类;

b)接口当中所有的方法都是抽象方法,并且默认为public权限,而抽象类当中可以有抽象方法,也可以没有抽象方法;

c)接口当中的变量全部为全局常量,而抽象类当中可以定义任何类型的变量;

d)抽象类当中有构造函数,而接口没有;

第二:在使用方法,接口的使用会更多一些,因为接口可以更好的隐藏具体实现的细节,从而降低系统的耦合度,提高可扩展性,下面我就谈一下我所理解的抽象类和接口在使用方面的区别:

a)在我经常使用的设计模式当中,如工厂模式,依赖注入模式,DAO模式等,都大量的使用到了接口,这些接口通常是作为一个模块被外部程序调用的标准。比如说,在DAO模式当中,要求将所有涉及到访问数据的代码全都封装到DAO层当中,业务层只能通过DAO层所暴露出来的借口来访问DAO对象。这样设计的好处可以解除业务逻辑和数据访问逻辑的耦合。对于抽象类来说,通常将通用的、固定代码写在抽象类的非抽象函数当中,而对于一些经常变化的功能,则定义为抽象类的抽象函数,这样的设计方法可以减少重复代码,提升代码的可复用性。

b)在常见的J2EE相关框架当中也经常的使用到接口和抽象类,如Spring框架就是最好的例子,使用Spring的依赖注入容器可以更容易的实现面向接口编程。而在Sping当中的模板代理模式当中,也使用到了抽象类的特征。

总而言之,使用接口和抽象类之类的目的,就是为了能尽可能是减少系统当中的重复代码,提升系统的可扩展性。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2