• 面向对象之继承


    面向对象的三大特征:

    一、继承:

    1. 定义:继承是创建新类的方式,新建的类可以继承一个或多个父类(python中支持多继承)。
    2. 继承分为单继承(继承一个父类)和多继承(继承多个父类)
    3. 为什么要用继承:在程序中,通过继承,可以得到父类的所有属性(包括数据属性、函数属性)。
    4. 查看继承:

    父类在继承中又称为基类,即基于这个父类而创建的新类,查看父类的方式:

          Sun.__bases__()(查看Sun所继承的所有基类(父类))

          Sun.__base__()(从左到右查看第一个基类(即父类))

    如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如__str__)的实现。

    二、继承与抽象

    抽象:抽取多个类中的共同部分,组成一个新的类。抽象最主要的作用是划分类别。

    通过抽象:得到公共部分的属性,并放到一个类中,并作为父类。

    通过继承:避免了重复代码。

    先抽象再继承,继承是基于抽象的结果,肯定先经过抽象的过程,再通过继承的方式去表达出抽象的结构

        分析:继承所生成的所有子类,只要基类中包含了这个父类,得到的子类肯定包含这个基类中的所有属性,也就是说,这些子类都含有某些相同属性,那么我们在考虑问题的时候,可以先把这些共同属性抽取出来,放到一个类中,并把这个类作为父类,进行继承,所以说现有抽象,再有继承。

    四、派生:

    定义:派生指的是子类继承某个父类,并且这个子类拥有自己独特的属性和方法(即子类类中得有自己的属性,否则与父类完全相同),得到一个派生类。

    重用:实质是子类中再次用到父类中定义的属性,包括方法和数据。

       重用的方式有两种:

    1.父类名.父类中的方法名(指名道姓)

    2.super().父类中的方法名

    super().方法名的方式:supper().实质是相对于一个对象,会按照对象访问属性的方式进行访问,即有先后顺序。

    (Python2中,super()的用法super(子类名,self) ).方法。参数为当前类,当前对象

    super用在存在继承关系的子类中。

    查找顺序:1.对象->->父类->父类的父类。。。。。

              2.如果一个子类由多个父类,那么查找到父类级别时,顺序是从左到右。

              3深度优先,沿着一条继承路径找到底,如果没有,再找其他继承路径

              4.当存在共同父类时,会产生菱形继承关系。菱形继承关秀:先深度优先,然后再广度优先。

              

    经典类与新式类的区别:

    所有直接继承或间接继承object的类,都是新式类。(object 称之为根类,意思是所有类都源自于object类,简单的说object提供了一些常用的基础操作。)

    即所有类都属于新式类(在python3中)

    python3中,默认所有类都是新式类;在python2中默认是经典类:不会自动继承object

    在经典类中,属性的查找按照深度优先,一条路走到黑。(Python2中才有经典类。)

    调用.mro()该方式,会显示查找顺序。

    .super()访问父类时,按照mro列表查找。

  • 相关阅读:
    CentOS 6.6 下源码编译安装MySQL 5.7.5
    CentOS 6.6下安装配置Tomcat环境
    Redhat6.7 切换Centos yum源
    css盒模型
    mysql 查询表占用空间大小
    ligerform 控件元素设置为只读
    FtpClient中文文件名下载失败问题
    java Runtime.exec() 执行问题
    java log4j动态生成log文件
    java udp地址匹配
  • 原文地址:https://www.cnblogs.com/yu-931017/p/10121737.html
Copyright © 2020-2023  润新知