浏览 3397 次
锁定老帖子 主题:抽象类 接口 复习
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-12
最后修改:2010-04-13
综合以上几点: 抽象类:只可以继承一个抽象类,却可以提供一些方法的实现,体现的是继承关系。 接口:可以继承多个接口,却不能提供方法的实现,体现的是契约关系。 我们定义抽象类型的时候可以使用抽象类,定义一些次要行为时就可以使用接口。 AlarmDoor是一种(is-a)Door类型,拥有(like-a)Alarm提供的行为。 再举几个例子: public class Cellphone extends Phone implements Bluetooth{ } public class 电视机 extends 电器 implements 遥控器{ } 再看一下Collection接口,AbstractCollection定义为一个抽象类,继承了Collection接口,把接口中的size()和iterator()抽象化,其他方法实现。因此当一个具体的实现类继承AbstractCollection抽象类时只需实现size()和iterator()的具体实现就可以了。而不用每个方法都实现一次。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-14
帖子说的不错 再接再厉不过要保证正确性 要是误导了谁就不好了
|
|
返回顶楼 | |
发表时间:2010-04-14
最后修改:2010-04-14
我觉得各有各的优势 抽象类用得好好处是很明显的
比如给人行发报文因为有很多业务报文组装报文时 用一个抽象类就很好 用接口就比较麻烦了(因为不知道是那种报文掉接口不好确定) 抽象类把行为定义在那里 调抽象方法让子类实现就很好 我很喜欢 愚见.... |
|
返回顶楼 | |
发表时间:2010-04-15
本人有点不同的看法:
Interface的作用是: 定义界面, 或者你说的契约。它不管你是如何实现的。不管谁拿到了实现这个Interface的 具体实现类,那么就可以按照自己定义的契约去使用了。 这样,无论具体实现类如何改变,使用这个Interface的调用者, 都不需要变化。 既然是契约, 怎么能随随便便就改呢? 所以这不是Interface的缺点, 而是他的作用所在。 好比 JDBC 实际就应该是一大堆Interface, 你使用JDBC的时候, 不用管这个JDBC的实现是 ORACLE的, MYSQL的, 还是MSSQL的。 要是JDBC的接口整天变,那ORACLE, MYSQL, MSSQL 还不得疯了? abstract class的目的是 实现,它的目的是把子类里面共同的东西集中到一起来实现, 这样 子类里面本来重复的东西不见了。 关于多重继承, 你想一想,既然abstract class是一个实现, 那么如果可以继承多个class,而每个父类里都有一个实现,那就很难弄清楚那个才是真正的实现了。 单继承, 正是java 比C++ 简单的一个重要原因, 甚至可以说是java的优势。 愚见, 不足之处还请拍砖。 |
|
返回顶楼 | |
发表时间:2010-04-15
个人认为接口就是一个规定
|
|
返回顶楼 | |