java 抽象类

java 抽象类

   由于我接触编程的时间比较晚,我学编程的时候,很多书籍大都再讲AOP、面向接口编程等。
对于抽象类的用途感觉不是很清晰,所以在这里参考着《java与模式》一书,好好在这方面理解。
虽然很多知识点不是原创的,我参考着这本书,从中抽取知识点,加以理解和温故。
但我确实从中学到了很多,我觉得这是值得的。

抽象类的定义:
 抽象类提供一个类型的部分实现。抽象类可以有实例变量,以及一个或多个构造子。抽象类可以同时
 有抽象方法和具体方法。
 一个抽象类不会有实例,这些构造子不能被客户端调用来创建实例。一个抽象类的构造子可以被其子类调用,
 从而使一个抽象类的所有子类都可以有一些共有的实现,而不同的子类可以在此基础上有自己的实现。

抽象类的用途:
 抽象类通常代表一个抽象的概念,她提供一个继承的出发点。而具体类则不同,具体类可以实例化,应该给出一个
 商业逻辑实现的对象模板。由于抽象类不可以实例化,因此一个设计师设计一个新的抽象类,一定是用来继承的
 
 假设有具体的类,类A和类B,类B是类A的子类。一个最简单的修改方案应当是建立抽象类C,然后让类A和类B
 成为抽象类C的子类。(我很赞同这一点)。
 
 
在一个从抽象类到多个具体类的继承关系中,共同的代码应当尽量移动到抽象类里。
 在一个继承的等级结构中,共同的代码应当尽量向等级结构的上方移动。把重复的代码从子类里面移动到超类里面,
 可以提高代码的复用率。由于代码在共同的超类而不是几个子类中出现,在代码发生改变时,设计师只需要修改
 一个地方。这对代码的复用明显是有利的。
 一个对象从超类继承而来的代码,在不使用时不会造成对资源的浪费。回到前面所讨论的代码重构的例子,
 设计师应当将类A和类B的共同代码尽量移动到抽象超类C里面,这样可以保证最低限度的复用。
 一个典型的例子就是策略模式。策略模式中,抽象策略角色的分量越重越好,也就是说尽可能将公共的方法移动
 到抽象的角色中。
 
 
与代码的移动方向相反的是,数据的移动方向是从抽象类到具体类,也就是说从机场的等级结构的高端向
 等级结构低的低端移动。一个对象的数据不论是否使用都会占用资源,因此数据尽量放到具体类或者等级结构
 的低端。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值