zoukankan      html  css  js  c++  java
  • 029. Python多态介绍

    多态:不同的子类对象,调用相同的父类方法,产生不同的结果

    1. 继承
    2. 重写

    在不改变原有代码的前提下,实现了不同的效果

    class Soldier():
            # 攻击
            def attack(self):
                    pass
            # 后退
            def back(self):
                    pass
    
    # 陆军
    class Army(Soldier):
            def attack(self):
                    print("[陆军]击鼓进攻")
    
            def back(self):
                    print("[陆军]鸣金撤退")
    
    # 海军
    class Navy(Soldier):
            def attack(self):
                    print("[海军]发射鱼雷")
    
            def back(self):
                    print("[海军]潜入海底")
    
    # 空军
    class AirForce(Soldier):
            def attack(self):
                    print("[空军]空中投弹")
            def back(self):
                    print("[空军]掉头撤退")
    
    # 类的实例化 返回陆军对象
    army_obj = Army()
    # 类的实例化 返回海军对象
    navy_obj = Navy()
    # 类的实例化 返回空军对象
    af_obj = AirForce()
    
    # 各就位准备
    listvar = [army_obj,navy_obj,af_obj]
    
    # 将军下达命令
    sign = True
    while sign:
            strvar = """
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
            """
            print(strvar)
            num = input("将军,请下达您的指令:")
    
    
            if num == "1":
                    for i in listvar:
                            i.attack()
    
            elif num == "2":
                    for i in listvar:
                            i.back()
    
            elif num == "3":
                    for i in listvar:
                            # 如果当前的对象是空军类型的,调用attack方法
                            if isinstance(i,AirForce):
                                    i.attack()
                            # 否则调用back方法
                            else:
                                    i.back()
    
            elif num.upper() == "Q":
                    # sign=False
                    break
    
            else:
                    print("报告长官,风太大,我听不到")

    执行

            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:1
    [陆军]击鼓进攻
    [海军]发射鱼雷
    [空军]空中投弹
    
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:2
    [陆军]鸣金撤退
    [海军]潜入海底
    [空军]掉头撤退
    
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:3
    [陆军]鸣金撤退
    [海军]潜入海底
    [空军]空中投弹
    
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:4
    报告长官,风太大,我听不到
    
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:q
  • 相关阅读:
    ORACLE小错误和小技巧
    linux下面ssh免密码登陆
    JAVA中值传递和引用传递,抽象类,接口的概念
    org.apache.catalina.LifecycleException tomcat 启动 maven 处处都是坑!!!
    springmvc登陆拦截案例
    eclipse tomcat add and remove工程异常
    spring 官方下载地址(Spring Framework 3.2.x&Spring Framework 4.0.x)
    SpringMvc JSON 406,吐血。。。。
    List
    集合Collection
  • 原文地址:https://www.cnblogs.com/zyxnhr/p/12317109.html
Copyright © 2011-2022 走看看