抽象类(二):
抽象类的作用:模板
1、从语义的角度看,抽象类是从多个具体类中抽象出来的父类,具有更高层次的抽象
2、从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其子类的模板,从而避免了其子类设计的随意性
3、抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类从整体上会大致保留抽象类的行为方式
下面代码展示的是另一种抽象类的模板使用样式:
abstract class SpeedMeter{ //-转速 private double trunRate; public SpeedMeter(){ } //-定义一个获取半径的 抽象方法 public abstract double getRadius(); public void setTrunRate(double trunRate){ this.trunRate=trunRate; } //-定义一个获取速度的方法,调用 还未实现的 获取半径的抽象方法 public double getSpeed(){ return Math.PI*2*getRadius()*trunRate; } } public class CarSpeedMeter extends SpeedMeter{ //-实现父类的抽象方法 返回半径 public double getRadius(){ return 0.25; } public static void main(String[] args){ CarSpeedMeter car=new CarSpeedMeter(); car.setTrunRate(25); System.out.println(car.getSpeed()); } }
运行结果:
如上代码中:SpeedMeter 类里提供了获取速度表的通用方法,但是具体实现细节则推迟到了其子类 CarSpeedMeter 中来实现,这也是一种典型的模板模式
总结:
模板模式在面向对象的软件中很常用,其原理简单,实现也简单,其一些简单规则如下:
1、抽象父类可以只定义需要使用的某些方法,把不能实现的部分抽象成抽象方法留给子类去实现
2、父类中可能包含需要调用其他系列方法的方法,这些被调用的方法既可以被父类实现,也可以通过抽象方法的方式由子类来实现
热心技术,并兼吃喝,偶谈风月,不言国事.