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
    复制代码
    学习记录,小白一枚
  • 相关阅读:
    分享最好的HTML5编码教程和参考手册
    随机字符变换效果的jQuery插件开发教程
    拒绝用SEO的眼光来设计你的Meta标签
    GBin1教程:使用jQuery插件jquery.validationEngine实现表单验证功能
    vs 2010 程序发布时出现 TransformXml任务意外失败
    CSS hack
    javascript div 弹出可拖动窗口
    Javascript String类的属性及方法
    兼容浏览器的布局CSS
    该伙伴事务管理器已经禁止了它对远程/网络事务的支持
  • 原文地址:https://www.cnblogs.com/wangsirde0428/p/14322576.html
Copyright © 2011-2022 走看看