打字猴:1.70045887e+09
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 ]  [ 下一页 ]