抽象类(abstract class)

在java语言里,类有两种:一种是具体类,另一种是抽象类。具体类可以实例化,
抽象类不可以实例化。
抽象类仅提供一个类型的部分实现。抽象类可以有实例变量,以及一个或多个构造子。
抽象类可以同时有抽象方法和具体方法。

1、抽象类应该拥有尽可能多的共同代码
   在一个从抽象类到多个具体类的继承关系中,共同的代码应当尽量移动到抽象类里
2、抽象类应当拥有尽可能少的数据

针对抽象编程
   针对抽象编程,不要针对具体编程。这就是依赖倒转原则。
   这一原则点出了抽象类对代码复用的一个重要的作用

正确使用继承
   在java语言中,继承关系可以分为两种:
   一种是类对接口的实现,称做接口继承。另一种是类对类的继承,称做实现继承

什么时候才应当使用继承复用
   继承代表“一般化/特殊化”关系,其中基类代表一般,而衍生类代表特殊,衍生类
将基类特殊化或扩展化。只有当以下Code条件全部满足时,才应当使用继承关系:
   (1) 子类是超类的一个特殊种类,而不是超类的一个角色,也就是要区分“Has-A”
       与“Is-A”两种关系的不同。Has-A关系应当使用聚合关系描述,而只有Is-A
       关系才符合继承关系。
   (2) 永远不会出现需要将子类换成另一个类的子类的情况。
   (3) 子类具有扩展超类的责任,而不是具有置换掉(Override)或注销掉(Nullify)超类
       的责任。
   (4) 只有在分类学角度上有意义时,才可以使用继承,不要从工具类继承

接口(Interface)
接口是一个完全抽象的类
posted @ 2008-03-12 09:33  谢芳[Kevin]  阅读(178)  评论(0编辑  收藏  举报