• 封装、继承和多态


    面向对象三大特性:

    1. 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中
    2. 继承 实现代码的重用,相同的代码不需要重复的编写
    3. 多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度

    面向对象三大特性:

    1. 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中
    2. 继承 实现代码的重用,相同的代码不需要重复的编写
    3. 多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度
    class 类名(父类名):
    
        pass

    当 父类 的方法实现不能满足子类需求时,可以对方法进行重写(override)
    重写 父类方法有两种情况:

    1. 覆盖 父类的方法:父类的方法实现 和 子类的方法实现完全不同
      具体的实现方式,就相当于在 子类中 定义了一个 和父类同名的方法并且实现。
    2. 对父类方法进行 扩展:子类的方法实现 中 包含 父类的方法实现
      在子类中 重写 父类的方法;在需要的位置使用 super().父类方法 来调用父类方法的执行代码;其他的位置针对子类的需求,编写 子类特有的代码实现。
    关于 super
    • 在 Python 中 super 是一个 特殊的类
    • super()就是使用 super 类创建出来的对象
    • 最常 使用的场景就是在 重写父类方法时,调用 在父类中封装的方法实现

    因为:调用父类方法的另外一种方式:在 Python 2.x 时,如果需要调用父类的方法,还可以使用以下方式:父类名.方法(self)。目前在 Python 3.x 还支持这种方式,但不推荐使用,因为一旦 父类发生变化,方法调用位置的 类名 同样需要修改。

    父类的 私有属性 和 私有方法

    子类对象 不能 在自己的方法内部,直接 访问 父类的 私有属性 或 私有方法
    子类对象 可以通过 父类 的 公有方法 间接 访问到 私有属性 或 私有方法

    • 私有属性、方法 是对象的隐私,不对外公开,外界 以及 子类 都不能直接访问
    • 私有属性、方法 通常用于做一些内部的事情

    3.1.2 多继承

    子类 可以拥有 多个父类,并且具有 所有父类 的 属性 和 方法,例如:孩子 会继承自己 父亲 和 母亲 的 特性。

    class 子类名(父类名1, 父类名2...):
        pass
    新式类与旧式(经典)类
    • 新式类:以 object 为基类的类,推荐使用
    • 经典类:不以 object为基类的类,不推荐使用
    • 在 Python 3.x 中定义类时,如果没有指定父类,会 默认使用 object作为该类的 基类 —— Python 3.x 中定义的类都是 新式类,在 Python 2.x 中定义类时,如果没有指定父类,则不会以 object 作为 基类。
    • 为了保证编写的代码能够同时在 Python 2.x 和 Python 3.x 运行!今后在定义类时,如果没有父类,建议统一继承自 object:
    class 类名(object):
        pass
    

    object 是 Python 为所有对象提供的 基类,提供有一些内置的属性和方法,可以使用 dir(object) 函数查看。


    3.2 多态

    面向对象三大特性:

    1. 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中
      • 定义类的准则
    2. 继承 实现代码的重用,相同的代码不需要重复的编写
      • 设计类的技巧
      • 子类针对自己特有的需求,编写特定的代码
    3. 多态 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果
      • 增加代码的灵活度
      • 以 继承 和 重写父类方法 为前提
      • 调用方法的技巧,不会影响到类的内部设计

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



  • 相关阅读:
    并行和并发
    怎样用第三方开源免费软件portecle从https站点上导出SSL的CA证书?
    我持续推动Rust语言支持Windows XP系统
    Android——4.2.2 文件系统文件夹分析
    hadoop(八)
    自己定义html中a标签的title提示tooltip
    多个返回 顶部的代码
    同学们,OpenCV出3.0了,速去围观!
    hdu1002
    好记性不如烂笔头(一)
  • 原文地址:https://www.cnblogs.com/guo2733/p/10749292.html
Copyright © 2020-2023  润新知