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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 旧人勿恋 中级黑马   /  2015-4-16 19:57  /  430 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类与接口:

抽象类:

一般用于描述一个体系单元,将一组共性内容进行抽取,特点:可以在类中定义抽象内容让子类实现,

可以定义非抽象内容让子类直接使用。它里面定义的都是一些体系中的基本内容。

接口:

一般用于定义对象的扩展功能,是在继承之外还需这个对象具备的一些功能。

抽象类和接口的共性:

都是不断向上抽取的结果。

抽象类和接口的区别:

  1

:抽象类只能被继承,而且只能单继承。

接口需要被实现,而且可以多实现。

   2

:抽象类中可以定义非抽象方法,子类可以直接继承使用。

接口中都有抽象方法,需要子类去实现。

3

:抽象类使用的是is a 关系。

  接口使用的 like a 关系。

4

:抽象类的成员修饰符可以自定义。
接口中的成员修饰符是固定的。全都是public的

7 个回复

倒序浏览
好厉害!膜拜大神!
回复 使用道具 举报
guoyangpeng 来自手机 中级黑马 2015-5-18 23:21:16
藤椅
新手飘过,学习了
回复 使用道具 举报
接口有点像小时候的红白机卡槽,只要方法一致,能插进去通电就能用。这里的关键是方法一致,你可以认为接口是一个抽象方法的封包,里面并没有提供状态。所以也有人说接口是面向方法的。而抽象类,很大程度是因为他内部含有抽象方法,是一个半成品,他是一个非抽象类实现过程的中间步骤。但是他可能已经含有状态或者一部分非抽象方法,这里就决定了接口和抽象类不能相互替代。正如上面所说,抽象方法内部可能含有非抽象的方法,这样抽象类就无法被多承继(菱形继承问题),而接口因为内部都是抽象方法,所以并没有这个问题。当然,这些概念都是比较陈旧的,在1.8时候为了和Lambda函数做对接,现在接口可以有非抽象方法,有兴趣请自行百度。
回复 使用道具 举报
说的好啊。
回复 使用道具 举报
赞一个,好好学
回复 使用道具 举报
牛啊,,,,
回复 使用道具 举报
谢谢分享.......................
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马