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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张翼 黑马帝   /  2011-11-11 09:22  /  1568 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract和interface有什么区别?

5 个回复

倒序浏览
抽象类:
由抽象方法和常量、变量、全局常量、构造方法、普通方法组成
使用abstract声明
子类要通过extends继承抽象类,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法
存在单继承的局限
抽象类可以实现若干个接口
接口:
由抽象方法和全局常量组成
使用interface关键字
子类要通过implements实现接口,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法
一个子类可以实现多个接口
接口不能继承一个抽象类,但允许继承多个接口
回复 使用道具 举报
绿影 黑马帝 2011-11-11 10:25:05
藤椅
本帖最后由 绿影 于 2011-11-11 10:25 编辑

我的理解是接口是一种特殊的抽象类。它特殊在:(1)这个类中所有的方法都是抽象的,子类通过i实现mplements的方式去实现(继承的变种)时务必实现所有的抽象方法;(2)接口的实现子类可以implements多个接口,打个比喻,类似于一个混混既认黑帮老大为干爹又认警察局长为干爹,简直就是想认谁为干爹都成只要这个人能罩着他(就是是一个接口),听别人话就成(实现别人所有抽象方法)。抽象类只能单继承(extends);(3)接口与接口直接也可以通过extens方式继承,此时也是单继承,类似于管你认多少干爹,亲爹就只能有一个。我们在使用时是选择继承还是接口就按照自己需求而定了。
回复 使用道具 举报
这两个要怎么区别?接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,----------abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。

回复 使用道具 举报
张翼今天的问题很多耶,这些都是什么问题,你上百度一下,看看你的问题,这些问题就根本不是问题。不要只是为了技术分而问些没有技术含量的问题啊。还是回去好好看视频吧,这些老师都讲过,
回复 使用道具 举报
abstract 可以用来修饰类,也可以用来修饰方法:
修饰类时,该类是抽象类,不能实例化,可以通过继承该类的子类进行实化;
                                    抽象类中可以有实体方法,而实体类中不能有抽象方法。
修饰方法时,该方法是抽象方法,不能有实现体。继承该类时,实体类必须实现该类中所有的抽象方法。
interface是接口,接口中只能定义常量和抽象方法。接口中的方法都是抽象方法,public abstract ,属性都是public static final 修饰的。
                       抽象类实现该接口时不必复写所有的抽象方法。实体类实现此接口时要实现所有的抽象方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马