zoukankan      html  css  js  c++  java
  • day 20

    day 20 面向对象的三大特性 (继承,封装,多态)

    01.继承

    1. 什么是继承

      1. 继承指的是新建立的方法,新建的类称之为子类或者派生类,自类继承的类叫做父类,也称之为基类或超类。
      2. 继承的特征;
        1. 子类可以继承父类的属性(特征与技能(变量与函数)),并且可以派生出自己的属性
        2. 一个子类可以继承多个父类(python的特性)
    2. 为什么要继承

      1. 继承的目的是为了减少代码的冗余(代码的重复)
    3. 如何实现继承

      1. 首先要确定好谁是子类,谁是父类。
      2. 在定义类时,子类+(),()内写括号父类,实现继承。
      class fu:
        xx='xx'
      class f2:
        zz='zz'
      class zl(fu):
        yy='yy'
      class z2(fu,f2): # 继承多个父类
        dd='dd'
      
    4. 查看继承的父类,__bases__(以元组的形式)

    class F1:
        pass
    class F2:
        pass
    class Z1(F1,F2):
        pass
    print(Z1.__bases__)
    
    (<class '__main__.F1'>, <class '__main__.F2'>)
    
    1. 如何寻找继承关系;
      1. 想要寻找继承关系,现抽象在继承
    2. 抽象;
      1. 抽取相同的属性,定义为父类
    3. 在程序中继承
      1. 对象——>调用类——>继承父类
    4. 继承的关系;
      1. 对象是一些列相同的特征和技能的结合体
      2. 类是一些列又有相同特征和技能的对象结合体
      3. 继承类是一些列又有相同特征和技能的类结合体
    5. 继承背景下对象属性查找顺序
      1. 对象本身的空间——>类空间——>父类空间——>报错
    6. 派生
      1. 派生指的是子类在继承父类属性基础上,拥有自己的属性
      2. 子类派生出的属性若与父类的相同,则以子类的为准
    7. 派生状态下继承的用法
    8. 新式类与经典类
      1. 新式类;所有继承object的类,python3中都是新式类
      2. 经典类;在python2中只要没有继承object都是经典类
    9. 再多继承情况下的查看当前类的继承顺序 mro()
      1. 从左到右
      2. 查找顺序;本身——>从左到右的父类——>object——>报错
      3. 子类. mro() # 查看字类的继承顺序,mro继承自object(type与object相互继承)
    10. 菱形继承的继承顺序
      1. 在多继承的情况下形成的
      2. 在经典类和新式类下的继承顺序不同
        1. 经典类会根据深度优先(一条线一条线找,第一条线就找到根类)
        2. 新式类会根据广度优先(一条线一条线找,最后一条线才找到根类)(继承object的那个类)
        3. 最后才寻找继承object的那个类
  • 相关阅读:
    【?】Hello。。。
    【Calc】对于‘精分’的研究
    [AFO]记五年oi生涯及CSP2019复赛游记
    CF#579div.3
    「BZOJ1827」奶牛大集会
    「BZOJ2821」作诗 && 「BZOJ2724」蒲公英
    「BZOJ4576」262144
    「Bzoj5055」膜法师
    「51nod1689」逛街
    「51nod1681」公共祖先 &&「51nod2553」双重祖先
  • 原文地址:https://www.cnblogs.com/luocongyu/p/11668785.html
Copyright © 2011-2022 走看看