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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Akm 黑马帝   /  2012-3-1 23:21  /  3476 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract class和interface有什么区别?

6 个回复

倒序浏览
百度N多的,
回复 使用道具 举报
不同点
A. interface需要实现,要用implements,而abstract class需要继承,要用extends。
B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
C. interface强调特定功能的实现,而abstract class强调所属关系。
D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 许圣建 于 2012-3-2 02:47 编辑

根据实际情况选择使用三种类:interface,abstract class,concrete class(单词没错吧?)
首选interface,这个最灵活,可以extends扩充接口功能,也可以implements实现接口的功能,部分实现就是抽象类了。
我第一次学java类的时候,发现“类的属性成员是为了描述其对象的特征各有不同;类的行为成员是因为其对象的功能大同小异”
interface只包含共享常量static final成员和无主体方法,是最最纯粹的abstract class。
我知道的interface的作用一个是“接口”,扩展功能;另一个是“模板”,定义通用的基本功能,像Collection;还有就是把所有的常量都放里面也可以;
abstract class我没见过老师使用,我想比一般父类再抽象一点就是他了吧,那么也就是说不希望被创建对象的,也就是比较抽象的无意义的父类,我们把这类父类加上abstract就好了,这是和private类似的做法。有的父类有实际意义,可以创建有用的对象,就不抽象了。。。

这个是集合框架图,这里就有抽象类的使用,但是我没用过。



评分

参与人数 1技术分 +2 收起 理由
老罗 + 2 图文回答很给力。

查看全部评分

回复 使用道具 举报
老师看我说的对不对啊?
回复 使用道具 举报
我觉得java应该多定义接口,少继承,abstract class是定义一个父类,抽象一些事物的共性,interface这个是类的一个扩展的功能,不是类本身具备的,那是类拥有的

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 赞一个!

查看全部评分

回复 使用道具 举报
补充一点interface多继承不光是指多实现,同时接口可以extends继承多个接口,实现真正意义上的接口功能扩充。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马