溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

抽象類和模板模式

發(fā)布時間:2020-06-20 11:47:28 來源:網(wǎng)絡(luò) 閱讀:436 作者:fuhcr75 欄目:移動開發(fā)

一模板模式的簡單規(guī)則

抽象父類可以只定義需要使用的某些方法,把不能實現(xiàn)的部分抽象成抽象方法,留給其子類去實現(xiàn)。

父類中可能包含需要調(diào)用其它系列方法的方法,這些被調(diào)用的方法既可以由父類實現(xiàn),也可以由其子類實現(xiàn)。父類里提供的方法只定義了一個通用算法,其實現(xiàn)也許并不完全由自身實現(xiàn),而必須依賴于其子類的輔助。

 

二模板模式應(yīng)用

1代碼示例  下載

Java代碼  抽象類和模板模式

  1. public abstract class SpeedMeter  

  2. {  

  3.     // 轉(zhuǎn)速  

  4.     private double turnRate;  

  5.     public SpeedMeter()  

  6.     {  

  7.     }  

  8.     // 把返回車輪半徑的方法定義成抽象方法  

  9.     public abstract double getRadius();  

  10.     public void setTurnRate(double turnRate)  

  11.     {  

  12.         this.turnRate = turnRate;  

  13.     }  

  14.     // 定義計算速度的通用算法  

  15.     public double getSpeed()  

  16.     {  

  17.         // 速度等于 車輪半徑 * 2 * PI * 轉(zhuǎn)速  

  18.         return java.lang.Math.PI * 2 * getRadius() * turnRate;  

  19.     }  

  20. }  

 

Java代碼  抽象類和模板模式

  1. public class CarSpeedMeter extends SpeedMeter  

  2. {  

  3.     public double getRadius()  

  4.     {  

  5.         return 0.28;  

  6.     }  

  7.     public static void main(String[] args)  

  8.     {  

  9.         CarSpeedMeter csm = new CarSpeedMeter();  

  10.         csm.setTurnRate(15);  

  11.         System.out.println(csm.getSpeed());  

  12.     }  

  13. }  

2運行結(jié)果

26.389378290154266

 

3結(jié)果分析

在這個范例的抽象父類中,父類的普通方法依賴于一個抽象方法,而抽象方法則推遲到子類中提供實現(xiàn)。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI