• 19.面向对象(继承)


    面向对象三大特性:封装、继承、多态

    继承的概念:

      在定义类时,可以从已有类当中提取想要的内容

      被继承的类称为父类、基类、超类,新定义的类称为子类、派生类

      注意:如果派生类中的属性与基类属性重名,那么派生类的属性会覆盖掉基类的属性。包括初始化函数。

        派生类在初始化函数中需要继承和修改初始化过程,使用’类名+__init__(arg)’来实现继承和私有特性,也可以使用super()函数。

    继承的优点:

      1.节省代码

      2.规范代码

    继承的作用

      面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。

    初识继承:

      只执行本类的方法

      只执行父类的方法

      既执行父类的方法又执行本类的方法

        父类名.类名(参数)

        super().方法名(参数(self参数自动传值))

      新式类:凡是继承object类都是新式类

        python3x所有的类都为新式类,因为python3x中的类都默认继承object

      经典类:不继承 object类都是经典类

        python2x(既有新式类,又有经典类)所有的类都默认不继承object类,都默认为经典类,可以用object继承为新式类

    继承的分类:

      1.单继承

        新式类和经典类查询顺序一样

      2.多继承

        新式类:遵循广度优先

          一条路走到倒数第二级,判断,如果其他路能一条路走到低,则返回走另一条路,如果不能,则走到终点

        经典类:遵循深度优先

          一条路走到低

    广度优先的图解如下:

    代码如下:

    # class A:
    #     pass
    #     # def func(self):
    #     #     print('IN A')
    # 
    # class B(A):
    #     pass
    #     # def func(self):
    #     #     print('IN B')
    # 
    # class C(A):
    #     # pass
    #     def func(self):
    #         print('IN C')
    # 
    # class D(B):
    #     pass
    #     # def func(self):
    #     #     print('IN D')
    # 
    # class E(C):
    #     # pass
    #     def func(self):
    #         print('IN E')
    # 
    # class F(D,E):
    #     pass
    #     # def func(self):
    #     #     print('IN F')
    # 
    # f1 = F()
    # f1.func()
  • 相关阅读:
    BZOJ 1016 最小生成树计数(矩阵树定理)
    sdoi2013 spring(hash+容斥)
    51nod 1301 集合异或和(DP)
    51nod 1576 Tree and permutation(树的重心+dfn序)
    BZOJ 4145 [AMPPZ2014]The Prices (状压DP)
    BZOJ 2260 商店购物(最小树形图)
    BZOJ 4006 [JLOI2015]管道连接(斯坦纳树+子集DP)
    BZOJ 2595 [Wc2008]游览计划(斯坦纳树)
    BZOJ 5180 [Baltic2016]Cities(斯坦纳树)
    51nod 1392 装盒子(费用流)
  • 原文地址:https://www.cnblogs.com/hpcz190911/p/11620859.html
Copyright © 2020-2023  润新知