1700453590
子类型必须完全实现父类型的方法,难道还有能不实现父类型的方法?当然有,方法只是对象的行为,子类完全可以覆写,正常情况下覆写只会增强行为的能力,并不会“曲解”父类型的行为,一旦子类型的目的不是为了增强父类型行为,那替换的可能性就非常低了,比如这样的代码:
1700453591
1700453592
//枪
1700453593
1700453594
interface Gun{
1700453595
1700453596
//枪用来干什么的?射击杀戮!
1700453597
1700453598
public void shoot();
1700453599
1700453600
}
1700453601
1700453602
//手枪
1700453603
1700453604
class Handgun implements Gun{
1700453605
1700453606
@Override
1700453607
1700453608
public void shoot(){
1700453609
1700453610
System.out.println(“手枪射击……”);
1700453611
1700453612
}
1700453613
1700453614
}
1700453615
1700453616
//玩具枪
1700453617
1700453618
class ToyGun implements Gun{
1700453619
1700453620
@Override
1700453621
1700453622
public void shoot(){
1700453623
1700453624
//玩具枪不能射击,这个方法就不实现了
1700453625
1700453626
}
1700453627
1700453628
}
1700453629
1700453630
上面定义了两种类型的枪支:手枪和玩具枪,手枪可以用来射击敌人(shoot方法),但玩具枪就完全不同了,它不能用来射击,只是一个虚假的玩具而已,如果我们在要求使用枪支的地方传递了玩具枪会出现什么问题呢?代码如下:
1700453631
1700453632
public static void main(String[]args){
1700453633
1700453634
Gun gun=new Handgun();
1700453635
1700453636
gun.shoot();
1700453637
1700453638
}
1700453639
[
上一页 ]
[ :1.70045359e+09 ]
[
下一页 ]