抽象類(二):

抽象類的做用:模板java

一、從語義的角度看,抽象類是從多個具體類中抽象出來的父類,具備更高層次的抽象this

二、從多個具備相同特徵的類中抽象出一個抽象類,以這個抽象類做爲其子類的模板,從而避免了其子類設計的隨意性設計

三、抽象類體現的就是一種模板模式的設計,抽象類做爲多個子類的通用模板,子類在抽象類的基礎上進行擴展、改造,但子類從總體上會大體保留抽象類的行爲方式3d

下面代碼展現的是另外一種抽象類的模板使用樣式:對象

 

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());
	}
}

 運行結果:blog

如上代碼中:SpeedMeter 類裏提供了獲取速度表的通用方法,可是具體實現細節則推遲到了其子類 CarSpeedMeter 中來實現,這也是一種典型的模板模式get

總結:模板

模板模式在面向對象的軟件中很經常使用,其原理簡單,實現也簡單,其一些簡單規則以下:class

一、抽象父類能夠只定義須要使用的某些方法,把不能實現的部分抽象成抽象方法留給子類去實現基礎

二、父類中可能包含須要調用其餘系列方法的方法,這些被調用的方法既能夠被父類實現,也能夠經過抽象方法的方式由子類來實現

相關文章
相關標籤/搜索