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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马19我最牛 中级黑马   /  2013-3-28 23:04  /  2292 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 许兵兵 于 2013-3-29 21:29 编辑

今天学习了接口,现在有点晕乎了,到底接口和抽象类到底有什么区别,主要是使用场景上的区别,比如说他们一般都是为了解决哪些实际的问题?
都怎么用,我就是感觉他们的区别不大(个人感觉).晕乎的很现在.
还有老师说类是继承关系, 接口是实现关系,

继承关系我还明天些,主要就是说一个体系的共性问题,
但是实现关系是怎么会事情吗?能稍微给我解释解释不?


接口类中不能有普通方法,而抽象类中可以有普通方法,这个我知道,






点评

如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢  发表于 2013-3-29 12:09

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
简单理解:可以把接口看成是一个入口,比如说你符合这个入口的规则,你就能进入,如果太胖或太高就不能进了。
而对于抽象类,和普通类没太大区别的,只是其中多了抽象的方法,抽象类就是给其他类继承用的,你继承了这个抽象类,你就可以使用这里的非抽象方法,并自己具体的实现抽象方法。
这两者都提高了扩展性,但是仍有一些区别的,具体请看:
http://bbs.itheima.com/thread-43162-1-1.html

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
接口:由全局常量和抽象方法组成
抽象类:有抽象方法的类必须是抽象类,也就是说抽象类里面可以既有抽象方法也可以有非抽象方法

抽象类只可以单继承,可以实现多个接口
接口可以多实现,可以继承多个接口,不能继承一个抽象类

一个抽象类必须被子类所继承,被继承的子类(如果子类不是抽象类)则必须复写抽象类中的全部抽象方法。
一个接口定义完成之后,接口本身也是需要子类(如果子类不是抽象类的话)来复写接口中的所有的抽象方法。

他们的用途都是强制让子类复写实现他的功能

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
抽象类用于部分实现一个类,再由用户按需求对其进行不同的扩展和完善;接口只是定义一个行为的规范或规定。

  抽象类在组件的所有实现间提供通用的已实现功能;接口创建在大范围全异对象间使用的功能。

  抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。

  抽象类主要用于设计大的功能单元;而接口用于设计小而简练的功能块。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
从定义上,抽象类是包含一个抽象方法的类,接口是抽象方法和全局常量的集合;组成:抽象
类由构造方法、抽象方法、普通方法、变量常量等组成,接口只包括常量和抽象方法;使用:
子类继承抽象类(extends),子类实现接口(implements);关系:抽象类可以实现多个接口,
但接口不能继承抽象类,允许实现多个接口;局限:抽象类有单继承的局限,而接口则没有此局限;
实际应用:抽象类是作为一个模板,接口是作为一个标准或表示一种能力。在实际的开发中,如果抽象类和
接口都可以使用的话,优先使用接口,可以避免单继承的局限。

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

回复 使用道具 举报
山西_李帅 来自手机 中级黑马 2013-3-30 14:11:59
地板
抽象类有个很特别的作用,就是强迫继承其的子类必须做什么。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马