1700458870
//引擎开始轰鸣
1700458871
1700458872
this.engineBoom();
1700458873
1700458874
//要让它叫的就是就叫,喇嘛不想让它响就不响
1700458875
1700458876
if(this.isAlarm()){
1700458877
1700458878
this.alarm();
1700458879
1700458880
}
1700458881
1700458882
//到达目的地就停车
1700458883
1700458884
this.stop();
1700458885
1700458886
}
1700458887
1700458888
//钩子方法,默认喇叭是会响的
1700458889
1700458890
protected boolean isAlarm(){
1700458891
1700458892
return true;
1700458893
1700458894
}
1700458895
1700458896
}
1700458897
1700458898
在抽象类中,isAlarm是一个实现方法。其作用是模板方法根据其返回值决定是否要响喇叭,子类可以覆写该返回值,由于H1型号的喇叭是想让它响就响,不想让它响就不响,由人控制,其源代码如代码清单10-10所示。
1700458899
1700458900
代码清单10-10 扩展后的H1悍马
1700458901
1700458902
public class HummerH1Model extends HummerModel{
1700458903
1700458904
private boolean alarmFlag=true;//要响喇叭
1700458905
1700458906
protected void alarm(){
1700458907
1700458908
System.out.println(“悍马H1鸣笛……”);
1700458909
1700458910
}
1700458911
1700458912
protected void engineBoom(){
1700458913
1700458914
System.out.println(“悍马H1引擎声音是这样在……”);
1700458915
1700458916
}
1700458917
1700458918
protected void start(){
1700458919
[
上一页 ]
[ :1.70045887e+09 ]
[
下一页 ]