抽象类(二):

抽象类的作用:模板

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、父类中可能包含需要调用其他系列方法的方法,这些被调用的方法既可以被父类实现,也可以通过抽象方法的方式由子类来实现

原文地址:https://www.cnblogs.com/baby-zhude/p/8137298.html