1700454619
1700454620
我们再来想一想,如果我们有一个玩具手枪,该如何定义呢?我们先在类图2-1上增加一个类ToyGun,然后继承于AbstractGun类,修改后的类图如图2-2所示。
1700454621
1700454622
1700454623
1700454624
1700454625
图2-2 枪支类图
1700454626
1700454627
首先我们想,玩具枪是不能用来射击的,杀不死人的,这个不应该写在shoot方法中。新增加的ToyGun的源代码如代码清单2-5所示。
1700454628
1700454629
代码清单2-5 玩具枪源代码
1700454630
1700454631
public class ToyGun extends AbstractGun{
1700454632
1700454633
//玩具枪是不能射击的,但是编译器又要求实现这个方法,怎么办?虚构一个呗!
1700454634
1700454635
@Override
1700454636
1700454637
public void shoot(){
1700454638
1700454639
//玩具枪不能射击,这个方法就不实现了
1700454640
1700454641
}
1700454642
1700454643
}
1700454644
1700454645
由于引入了新的子类,场景类中也使用了该类,Client稍作修改,源代码如代码清单2-6所示。
1700454646
1700454647
代码清单2-6 场景类
1700454648
1700454649
public class Client{
1700454650
1700454651
public static void main(String[]args){
1700454652
1700454653
//产生三毛这个士兵
1700454654
1700454655
Soldier sanMao=new Soldier();
1700454656
1700454657
sanMao.setGun(new ToyGun());
1700454658
1700454659
sanMao.killEnemy();
1700454660
1700454661
}
1700454662
1700454663
}
1700454664
1700454665
修改了粗体部分,把玩具枪传递给三毛用来杀敌,代码运行结果如下所示:
1700454666
1700454667
士兵开始杀敌人……
1700454668
[
上一页 ]
[ :1.700454619e+09 ]
[
下一页 ]