下面是一个简单的示例,其中定义了一个 MissileBase 类作为导弹的基类,以及两个子类 CruiseMissile 和 AntiShipMissile,它们继承了 MissileBase 类并实现了独有的属性和方法。
class MissileBase:
def __init__(self, name, length, weight, speed):
self.name = name # 导弹名称
self.length = length # 导弹长度
self.weight = weight # 导弹重量
self.speed = speed # 导弹速度
def launch(self):
print("发射导弹:{},长度:{}米,重量:{}吨,速度:{}m/s".format(self.name, self.length, self.weight, self.speed))
class CruiseMissile(MissileBase):
def __init__(self, name, length, weight, speed, fuel_capacity):
super().__init__(name, length, weight, speed)
self.fuel_capacity = fuel_capacity # 导弹燃油容量
def set_target(self, target):
print("巡航导弹:{},设置目标:{}".format(self.name, target))
class AntiShipMissile(MissileBase):
def __init__(self, name, length, weight, speed, warhead_type):
super().__init__(name, length, weight, speed)
self.warhead_type = warhead_type # 导弹弹头类型
def attack_ship(self, ship):
print("反舰导弹:{},攻击目标:{}".format(self.name, ship))
# 示例用法
cruise_missile = CruiseMissile("巡航导弹-1", 5, 0.5, 1000, 500)
anti_ship_missile = AntiShipMissile("反舰导弹-1", 4, 0.3, 1200, "高爆炸药")
cruise_missile.launch()
print("巡航导弹-1 燃油容量:{}L".format(cruise_missile.fuel_capacity))
cruise_missile.set_target("港口")
anti_ship_missile.launch()
print("反舰导弹-1 弹头类型:{}".format(anti_ship_missile.warhead_type))
anti_ship_missile.attack_ship("航母")
在上面的示例代码中,首先定义了一个 MissileBase 类作为导弹的基类,其中包含导弹的公共属性和方法。然后定义了两个子类 CruiseMissile 和 AntiShipMissile,它们继承了 MissileBase 类并实现了独有的属性和方法。
在 CruiseMissile 类中,新增了一个 fuel_capacity 属性和一个 set_target() 方法,分别表示导弹的燃油容量和设置目标的方法。
在 AntiShipMissile 类中,新增了一个 warhead_type 属性和一个 attack_ship() 方法,分别表示导弹的弹头类型和攻击舰艇的方法。
在主程序中,实例化了一个 CruiseMissile 对象和一个 AntiShipMissile 对象,并通过调用它们的方法来演示其功能。可以看出,由于基类 MissileBase 将导弹的公共属性和方法抽象出来,子类只需要在此基础上定义独有的属性和方法即可,代码更加简洁和易读。
运行结果为
发射导弹:巡航导弹-1,长度:5米,重量:0.5吨,速度:1000m/s
巡航导弹-1 燃油容量:500L
巡航导弹:巡航导弹-1,设置目标:港口
发射导弹:反舰导弹-1,长度:4米,重量:0.3吨,速度:1200m/s
反舰导弹-1 弹头类型:高爆炸药
反舰导弹:反舰导弹-1,攻击目标:航母