接口和抽象类的比较

概念上的比较

接口和抽象类的概念不一样。接口是对行为的抽象,抽象类是对根源的抽象。也就是说抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。

语法上的比较

1. 抽象类可以有自己的数据成员,也可以有非abstarct的成员方法,而接口只能够有静态的 不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的abstract class。

2. 在abstract class的定义中,我们可以赋予方法的默认行为。但是在interface的定义中,方法却不能拥有默认行为.( java 8 已经可以实现接口方法的默认行为了)

3. 接口可以多继承,抽象类不行

用法

当你关注一个事物的本质的时候,用抽象类;当你关注一个行为的时候,用接口。

posted @ 2015-01-09 17:12  龙昭羽  阅读(124)  评论(0编辑  收藏  举报