黑马程序员技术交流社区

标题: abstract class和interface有什么区别? [打印本页]

作者: Akm    时间: 2012-3-1 23:21
标题: abstract class和interface有什么区别?
abstract class和interface有什么区别?

作者: 房宝彬    时间: 2012-3-1 23:22
百度N多的,
作者: 熊玖帅    时间: 2012-3-1 23:46
不同点
A. interface需要实现,要用implements,而abstract class需要继承,要用extends。
B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
C. interface强调特定功能的实现,而abstract class强调所属关系。
D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。

作者: 许圣建    时间: 2012-3-2 02:14
本帖最后由 许圣建 于 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类似的做法。有的父类有实际意义,可以创建有用的对象,就不抽象了。。。

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




作者: 许圣建    时间: 2012-3-2 02:33
老师看我说的对不对啊?
作者: 沈样    时间: 2012-3-2 10:43
我觉得java应该多定义接口,少继承,abstract class是定义一个父类,抽象一些事物的共性,interface这个是类的一个扩展的功能,不是类本身具备的,那是类拥有的
作者: 许圣建    时间: 2012-3-2 21:10
补充一点interface多继承不光是指多实现,同时接口可以extends继承多个接口,实现真正意义上的接口功能扩充。




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