黑马程序员技术交流社区

标题: 什么时候用到接口,什么时候用到抽象类,二者区别? [打印本页]

作者: 草上飞    时间: 2012-10-23 19:40
标题: 什么时候用到接口,什么时候用到抽象类,二者区别?
什么时候用到接口,什么时候用到抽象类,二者区别?
作者: 于连林    时间: 2012-10-23 19:46
接口是一种特殊的抽象类!

并没有定义成抽象和非抽象的情况!

接口中只包含对常量和方法的定义,而没有变量和方法的实现!

作者: 秦松    时间: 2012-10-23 21:04
1,抽象类中可以定义抽象方法和非抽象方法。
接口定义的必须是抽象方法。

2,抽象类只能被继承,而且只能是单继承。
接口可以被实现,而且可以被多实现。

3,类与类之间是继承关系,存在着所属关系 is a。
类与接口之间存在实现关系,关系是: like a。

相同之处:
都是向上抽取而来的。

作者: fdiskfix    时间: 2012-10-23 21:22
接口是一组规范的定义
抽象类只是相当于占位符,更多的功能需要子类的完善
作者: 鲁中需    时间: 2012-10-23 21:31
接口是一种完全抽象的类。
“interface”(接口)关键字使抽象的概念更深入了一层。我们可将其想象为一个“纯”抽象类。它允许创 建者规定一个类的基本形式:方法名、自变量列表以及返回类型,但不规定方法主体。接口也包含了基本数 据类型的数据成员,但它们都默认为static和final。接口只提供一种形式,并不提供实施的细节。 接口这样描述自己:“对于实现我的所有类,看起来都应该象我现在这个样子”。因此,采用了一个特定接 口的所有代码都知道对于那个接口可能会调用什么方法。这便是接口的全部含义。所以我们常把接口用于建 立类和类之间的一个“协议”。有些面向对象的程序设计语言采用了一个名为“protocol”(协议)的关键字,它做的便是与接口相同的事情。

满足以下条件是最好使用抽象类:
a)子类不继承其它父类
b)子类中存在完全相同的功能实现的方法
c)子类中存在相同的属性
d)设计出的结构需要继承其它类
当需要满足d条件时,只能使用抽象类,否则也可以考虑使用接口实现。

满足以下条件是最好使用接口:
a)子类已经继承了其它父类
b)子类中不存在完全相同的功能实现方法
c)子类中不存在相同的属性
d)设计出的结构不需要继承其它类
当需要满足a条件时,只能使用接口,否则也可以考虑使用抽象类实现。
作者: 樊鹏飞    时间: 2012-10-23 21:38
接口不是类  是对类的具体功能的描述    接口之间可以继承而且是多继承  接口不能实例化对象
抽象类是类 需要使用abstract关键字修饰   抽象类其实就多了一个抽象方法 其他类有的他都有




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