zoukankan      html  css  js  c++  java
  • 类的继承

    在软件设计里,代码的复用和代码稳定性,一直是软件开发的重要目标之中的一个。由于仅仅有这样才干积累各种基础组件,以及维护曾经做过的工作。从复用的特性来说,就是利用曾经做过的工作,比方就像硬件里的IC一样。不须要知道它是怎么样实现的,仅仅要使用它即可了。

    因而软件也须要有这样的IC,在代码层次里的IC。曾经看来仅仅是用函数的方式复用,或者仅仅是数据结构的复用。

    当迈进面向对象编程时代时,自然而然地想到就使用类来复用了。这样数据结构和函数都同一时候能复用上。比函数的复用更省心了一步,就是数据结构和算法都不须要关心了,仅仅关心类提供了几个接口即可。比方想要MD5进行签名,仅仅须要使用这个类设置计算的数据和长度。就能够直接返回对应MD5签名了。

    而不必关心内部是做什么运算。使用什么数据结构来保存中间变量等。在类的复用里,主要有两种方式。一种是直接使用类,不正确类进行不论什么的改变。比方类的组合方式;第二种是对类进行改变,继承就是其主要方式。

    继承的方式要比组合的方式更方便,由于继承能够直接使用父类的数据结构,不需考虑父类的生命周期。而组合的方式是一定要考虑的。继承的方式能够不改变曾经接口,而使用最新的优化的算法,而组合的方式是一定要改变接口。

    继承的方式处理不同版本号软件兼容性也要方便。比方开发三个版本号的软件。每个版本号功能測试完毕之后,再开发下一个版本号,在开发下一个版本号时。又不想修改原来的代码,但又要利用和修改其一些计算方法,使用继承是最好的。

    这样能够在一个类里实现自己主动识别不同的版本号功能进行处理,仅仅须要创建时创建新的类对象就能够。

    Python里也设计有类继承。它的类继承方式怎么样呢?大体例如以下:

    class Super:
        def __init__(self, x):
            print('Super init')
    class Sub(Super):
        def __init__(self, x, y):
            Super.__init__(self, x)
            print('Sub init')
            
    I = Sub(1, 2)

    从上面能够看到。Super类是基类(又称为超类)。Sub是继承Super类。Sub类能够继承多个基类,仅仅要在括号并列多个即可,如Sub(Super1, Super2, Super3)。在派生类里要明白地调用基类的构造函数。才干够执行基类构造函数,如Super.__init__(self, x)。这一点不像C++的特性,在C++里是自己主动执行基类的构造函数。再执行派生类的构造函数。Python里按须要定制,想什么时候执行就在什么地方调用。

  • 相关阅读:
    【AS3代码】小游戏打飞机源代码
    【AS3代码】键盘的输入和输出
    PHP多维数组排序
    【AS3代码】一个完整的游戏框架
    【AS3代码】小画板升级版(带重绘回放和清空功能)
    Liunx命令工作总结(1)
    Java NIO基础 我们到底能走多远系列(17)
    ibatis 一对多 解决方案
    图片上传+预览+剪切解决方案我们到底能走多远系列(20)
    Liunx命令工作总结(2)
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7190149.html
Copyright © 2011-2022 走看看