打字猴:1.70045855e+09
1700458550
1700458551 }
1700458552
1700458553 }
1700458554
1700458555 好了,程序编写到这里,已经发现问题了,两个实现类的run()方法都是完全相同的,那这个run()方法的实现应该出现在抽象类,不应该在实现类上,抽象是所有子类的共性封装。
1700458556
1700458557 注意 在软件开发过程中,如果相同的一段代码拷贝过两次,就需要对设计产生怀疑,架构师要明确地说明为什么相同的逻辑要出现两次或更多次。
1700458558
1700458559 好,问题发现了,我们就需要马上更改,修改后的类图如图10-2所示。
1700458560
1700458561
1700458562
1700458563
1700458564 图10-2 修改后的悍马车模类图
1700458565
1700458566 注意,抽象类HummerModel中的run()方法,由抽象方法变更为实现方法,其源代码如代码清单10-4所示。
1700458567
1700458568 代码清单10-4 修改后的抽象悍马模型
1700458569
1700458570 public abstract class HummerModel{
1700458571
1700458572 /*
1700458573
1700458574 *首先,这个模型要能发动起来,别管是手摇发动,还是电力发动,反正
1700458575
1700458576 *是要能够发动起来,那这个实现要在实现类里了
1700458577
1700458578 */
1700458579
1700458580 public abstract void start();
1700458581
1700458582 //能发动,那还要能停下来,那才是真本事
1700458583
1700458584 public abstract void stop();
1700458585
1700458586 //喇叭会出声音,是滴滴叫,还是哔哔叫
1700458587
1700458588 public abstract void alarm();
1700458589
1700458590 //引擎会轰隆隆地响,不响那是假的
1700458591
1700458592 public abstract void engineBoom();
1700458593
1700458594 //那模型应该会跑吧,别管是人推的,还是电力驱动,总之要会跑
1700458595
1700458596 public void run(){
1700458597
1700458598 //先发动汽车
1700458599
[ 上一页 ]  [ :1.70045855e+09 ]  [ 下一页 ]