A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张向辉 于 2013-1-16 12:18 编辑

抽象类和接口的区别是什么?,它们分别解决的问题领域是什么?

点评

楼主你好,这个问题搜索下还是很容易就能够解决的,就不能提供技术分加分了  发表于 2013-1-10 09:32

4 个回复

倒序浏览
按照我的理解:接口是用来定义行为的,由实现类自己实现;抽象类是一些类的共性,有些功能确定的,有些不确定的就用抽象描述。具体应用方面,我还没自己定义过抽象类来用
回复 使用道具 举报
{:soso_e107:}我就不说了,因为类似的贴已经 有过了,LZ可以去参考:http://bbs.itheima.com/forum.php ... 4%E5%8C%BA%E5%88%AB

评分

参与人数 1技术分 +1 收起 理由
李培根 + 1 很给力!

查看全部评分

回复 使用道具 举报
相同点:
1> 都可以在内部定义抽象方法。
2> 通常都在顶层。
3> 都不可以实例化,都需要子类来实现。

不同点:
1> 抽象类中可以定义抽象方法和非抽象方法,而接口中只能定义抽象方法。
2> 接口的出现可以多实现,抽象类只能单继承。也就是说,接口的出现避免了单继承的局限性。
3> 继承和实现的关系不一致。
继承:is a,谁是谁的一种,所属关系,具备体系中的基本功能。
实现:like a 像谁

对于抽象类和一般类:
  类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口
  该如何描述事物,还如何描述事物,只不过,该事物出现了一些不确定的部分,也是该事物的功能,需要明确出现。
  但是无法定义主体。通过抽象方法来表示。抽象类比一般类多个了抽象函数。就是在类中可以定义抽象方法。

对于接口的理解:
  可以认为是一个特殊的抽象类,当抽象类中的方法全是抽象的,那么该类可以通过接口的形式来表示。
  接口是对外暴露的规则。
  接口是功能的扩展。
  接口的出现降低了耦合性

所以,扩展功能定义在接口中,接口没有特有数据,只是对于类功能的扩展,所需实现所有的抽象方法。
抽象类,它还是一个类,所以它有特有的数据和方法,只是有一些无法确定的部分,我们把它定义为抽象的,子类只需继承,并实现抽象的方法即可。

希望对楼主有帮助


评分

参与人数 1技术分 +1 收起 理由
李培根 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 高浩 于 2013-1-16 20:57 编辑

接口是来实现的,抽象类是用来继承的
接口是功能的扩展。
接口的出现降低了耦合性
他们的共同点就是都是抽象的,里面的抽象方法都必须要在其子类中进行覆盖,具有具体的方法体,

因为都是模糊的描述,所以是抽象的,如果想把其描述清晰的话就要进行方法的覆盖,这样才可以实例个实际存在的对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马