🐴
笔记
  • 学习笔记
  • Python 基础安排
  • 00 在虚拟机中安装 Ubuntu
  • 01 Linux基础
    • 操作系统(科普章节)
    • 操作系统的发展史(科普章节)
    • 文件和目录(理解)
    • Ubuntu 图形界面入门
    • 常用 Linux 命令的基本使用
    • Linux 终端命令格式
    • 文件和目录常用命令
    • ssh远程管理常用命令
    • 用户权限相关命令
    • 系统信息相关命令
    • 其他命令
  • 02 Python 基础
    • 认识 Python
    • 第一个 Python 程序
    • PyCharm 的初始设置(知道)
    • 多文件项目的演练
    • 注释
    • 算数运算符
    • 程序执行原理(科普)
    • 变量的基本使用
    • 变量的命名
    • 判断(if)语句
    • 运算符
    • 循环
    • 函数基础
    • 高级变量类型
    • 综合应用 —— 名片管理系统
    • 变量进阶(理解)
    • 函数进阶
  • 03 面向对象
    • 面向对象(OOP)基本概念
    • 类和对象
    • 面相对象基础语法
    • 面向对象封装案例
    • 面向对象封装案例 II
    • 私有属性和私有方法
    • 继承
    • 多态
    • 类属性和类方法
    • 单例
    • 异常
    • 模块和包
    • 文件
    • eval 函数
  • 04 项目实战资料
  • 05 vi —— 终端中的编辑器
  • 2-01 网络编程
  • 2-02 多任务
  • 2-03 web服务器v3.1
  • 2-04 Python高级语法v3.1
  • 2-05 MySQL数据库v3.1
  • 2-12 git版本管理
  • 2-21 数据分析
  • 2-24 数据结构和算法
Powered by GitBook
On this page
  • 目标
  • 多态案例演练
  1. 03 面向对象

多态

Previous继承Next类属性和类方法

Last updated 3 years ago

目标

  • 多态

面向对象三大特性

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

    • 定义类的准则

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

    • 设计类的技巧

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

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

    • 多态 可以 增加代码的灵活度

    • 以 继承 和 重写父类方法 为前提

    • 是调用方法的技巧,不会影响到类的内部设计

多态案例演练

需求

  1. 在 Dog 类中封装方法 game

    • 普通狗只是简单的玩耍

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

    • 哮天犬需要在天上玩耍

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

    • 在方法内部,直接让 狗对象 调用 game 方法

案例小结

  • Person 类中只需要让 狗对象 调用 game 方法,而不关心具体是 什么狗

    • game 方法是在 Dog 父类中定义的

  • 在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果

多态 更容易编写出出通用的代码,做出通用的编程,以适应需求的不断变化!

class Dog(object):

    def __init__(self, name):
        self.name = name

    def game(self):
        print("%s 蹦蹦跳跳的玩耍..." % self.name)


class XiaoTianDog(Dog):

    def game(self):
        print("%s 飞到天上去玩耍..." % self.name)


class Person(object):

    def __init__(self, name):
        self.name = name

    def game_with_dog(self, dog):

        print("%s 和 %s 快乐的玩耍..." % (self.name, dog.name))

        # 让狗玩耍
        dog.game()


# 1. 创建一个狗对象
# wangcai = Dog("旺财")
wangcai = XiaoTianDog("飞天旺财")

# 2. 创建一个小明对象
xiaoming = Person("小明")

# 3. 让小明调用和狗玩的方法
xiaoming.game_with_dog(wangcai)