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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© date1130 高级黑马   /  2014-10-11 12:13  /  1593 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一直没有搞明白,抽象类和借口的差异。
莫非只有单继承和多实现的好处吗?

3 个回复

倒序浏览
实现接口的类必须要是重写接口中的所有方法,而继承抽象类只要重写抽象方法就行
回复 使用道具 举报
抽象类可以有构造方法,接口不行,抽象类可以有普通成员变量,接口不行,抽象类可以有非抽象方法,接口不行,抽象类的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,抽象类中可以包含静态方法,接口中不能

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
首先,抽象类可以有非抽象方法,但是含有抽象方法的类必须被定义成抽象类。所以抽象类可以为部分方法提供默认实现,避免子类中重复实现它们,而接口不能,接口中只能包括抽象方法。其次,由于抽象类中允许加入具体方法(即非抽象方法),因此向抽象类中添加一个具体的方法,不会对它的子类造成影响。对于接口,一旦公布接口,就必须非常稳定,因为随意在接口中添加抽象方法,会影响到所有实现类,这些实现类要么实现新增抽象方法,要么只能声明为抽象类。最后可以把抽象类看作介于“抽象”和“实现”之间的半成品,抽象类力所能及的完成了部分实现,但还有一些功能有待于它的子类去实现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马