zoukankan      html  css  js  c++  java
  • 15多态

    1. 多态

    面向对象三大特性

    1. 封装 根据 职责 将 属性方法 封装 到一个抽象的 类 中

    • 定义类的准则

    2. 继承 实现代码的重用, 相同的代码不需要重复的编写

    • 设计类的技巧
    • 子类针对自己特有的需求, 编写特定的代码

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

    • 多态 可以 增加代码的灵活度
    • 继承 重写父类方法 为前提
    • 是调用方法的技巧. 不会影响到类的内部设计

    2. 多态案例演练

    1. 在 Dog 类中封装方法 game

    • 普通狗只是简单的玩耍

    2. 定义 XiaoTianQuan 继承自 Dog , 并且重写 game 方法

    • 哮天犬需要直接在天上玩耍

    3. 定义 Person 类, 并且封装一个 和狗玩 的方法

    • 在方法内部, 直接让 狗对象 调用 game 方法
     1 class Dog(object):
     2 
     3     def __init__(self, name):
     4         self.name = name
     5 
     6     def game(self):
     7         print("%s 蹦蹦跳跳的玩耍..." % self.name)
     8 
     9 
    10 class XiaoTianQuan(Dog):
    11 
    12     def game(self):
    13         print("%s 飞到天上去玩耍..." % self.name)
    14 
    15 
    16 class Person(object):
    17 
    18     def __init__(self, name):
    19         self.name = name
    20 
    21     def game_with_dog(self, dog):
    22 
    23         print("%s 和 %s 快乐的玩耍..." % (self.name, dog.name))
    24 
    25         # 让狗玩耍
    26         dog.game()
    27 
    28 
    29 # 1. 创建一个狗对象
    30 # xiaohei = Dog("小黑")
    31 xiaohei = XiaoTianQuan("小黑")
    32 
    33 # 2. 创建一个小明对象
    34 xiaoming = Person("小明")
    35 
    36 # 3. 让小明调用和狗玩的方法
    37 xiaoming.game_with_dog(xiaohei)
  • 相关阅读:
    RMQ
    LCA 笔记
    LUCAS 定理
    topcoder 643 DIV2
    BZOJ 1071组队
    Codeforces Round #283 (Div. 2)
    topcoder 642
    Codeforces Round #278 (Div. 2)
    树链剖分
    Codeforces Round #277 (Div. 2)
  • 原文地址:https://www.cnblogs.com/xinmomoyan/p/10351044.html
Copyright © 2011-2022 走看看