Java的抽象类

1.抽象类的定义

(1)抽象类仅提供一个类型的部分实现。不能被实例化。

(2)抽象类和子类的关系----是模板方法模式的一种应用

2.抽象类的用途

(1) 用于继承,尽量不要继承具体类。尽量不要继承具体类。尽量不要继承具体类。

(2)如果我们把一个模块看成一个树,那么树的树干树枝是抽象类(也可以是接口),而叶子是具体类(叶子是真正干活的)

3.抽象类的使用建议

(1)抽象类应当拥有尽可能多的共同代码

(2)抽象类应当用于尽量少的数据(状态)

(3)子类不应该置换掉(override)或者注销掉(nullify)父类的责任,而应该扩展超类的责任(可以使用接口等扩展)---可以用一个谚语:种瓜得瓜,种豆得豆来形容,瓜种是超类,瓜是子类。如果豆是子类就不符合了。

  如果一个子类过多的置换或者过多的注销掉超类的责任,那么就要考虑是不是这个子类不是这个超类的一个特例。

 

  比如:如果把狗设计成猫的子类,那么狗不会爬树,就需要注销猫的爬树功能。所以我们可以设计一个动物类,猫实现了动物类外,再扩展一个爬树接口

 

 (4) 不要继承工具类。只有当分类学有意义时,才使用继承。一个商业类型不会与一个工具类型有这种分类学上有意义的关系。

  应该和工具类是关联关系。

posted @ 2018-02-23 17:17  IT圈圈  阅读(171)  评论(0编辑  收藏  举报

皮皮虾美剧