《Java从入门到失业》第五章:继承与多态(5.1-5.7):继承


	《Java从入门到失业》第五章:继承与多态(5.1-5.7):继承
[编程语言教程]

5.继承与多态

5.1为什么要继承

       最近我儿子迷上了一款吃鸡游戏《香肠派对》,无奈给他买了许多玩具枪,我数了下,有一把狙击枪AWM,一把步枪AK47,一把重机枪加特林(Gatling)。假如我们把这些玩具枪抽象成类,类图的示意图大致如下:

 技术图片

我们发现,这3者之间有很多相同的属性和方法(红色部分)。有没有什么办法能够减少这种编写重复代码的办法呢?Java提供了继承来解决这个问题。我们可以在更高一层抽象一个枪类,在枪类里面编写这些重复的属性和方法,然后其余的枪都继承自枪类,它们只需要编写各自独有的属性和方法即可,使用继承优化后的类图设计如下:

 技术图片

在Java中,使用extends关键字来实现继承,我们把代码示例如下:

package com.javadss.javase.ch05;  
  
// 枪类  
class Gun {  
    private String name;  
    private String color;  
  
    public String getName() {  
        return this.name;  
    }  
  
    public String getColor() {  
        return this.color;  
    }  
  
    public void shoot() {  
        System.out.println("单发");  
    }  
  
    public void loadBullet() {  
        System.out.println("装弹");  
    }  
}  
  
// AWM类  
class AWM extends Gun {  
    private String gunsight;  
    private String gunstock;  
  
    // 安装瞄准器  
    public void loadGunsight(String gunsight) {  
        this.gunsight = gunsight;  
    }  
  
    // 安装支架  
    public void loadGunstock(String gunstock) {  
        this.gunstock = gunstock;  
    }  
}  
  
// AK47类  
class AK47 extends Gun {  
    private String gunsight;  
  
    // 安装瞄准器  
    public void loadGunsight(String gunsight) {  
        this.gunsight = gunsight;  
    }  
  
    // 连发  
    public void runingShoot() {  
        System.out.println("连发");  
    }  
}  
  
// 加特林类  
class Gatling extends Gun {  
    private String gunstock;  
  
    // 安装支架  
    public void loadGunstock(String gunstock) {  
        this.gunstock = gunstock;  
    }  
  
    // 连发  
    public void runingShoot() {  
        System.out.println("连发");  
    }  
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 《Java从入门到失业》第五章:继承与多态(5.1-5.7):继承