• oop三大特征之继承


    1.oop三大特征之继承

    1.什么是继承

      继承是一种关系,描述两个对象之间,什么是什么的对象。在程序中,继承描述的是类与类之间的关系。例如a继承了b,a就能直接使用b已经存在的方法和属性,其中a称之为子类,b称之为父类,也称为基类。

    2.为什么要使用继承:

      继承的一方可以直接使用被继承一方已经有的东西。其目的是为了重用已经有的代码,提高代码的重用性。减少代码重复,为多态提供必要的支持。

    3.如何使用继承

    class 类名称(父类的名称):
        类的内容
    # 在python中 一个子类可以同时继承多个父类

    4.继承与抽象

      继承描述的是子类与父类之间的关系。在有些例子中,子类虽然继承了父类并完成了代码的重用,可继承关系在逻辑上是错误的。oop的概念来自现实世界,所以应当遵循现实世界的逻辑。为了避免这种逻辑错误,我们可以将子类与父类间相同的部分参数抽取出来放到另一个类中,这个类称为公共父类。这个类与实际的业务需求是无关的在现实中也不实际存在,它的作用仅仅是存储相同代码以减少重复;这一过程我们称之为抽象。先抽象再继承。

    5.存在继承关系后的属性查找

      一个类必然继承另外一个类,被继承的类也有可能继承了其他的类,相当于C继承了B,B又继承了A。

      此时的查找顺序为 :对象本省的名称空间>>>类的名称空间>>>父类的名称空间>>>父类的父类的名称空间>>>object类。它会沿着继承关系一直往后找,直到找到为止,由于object是所有类的根类,所以不着最后都会去查找object类!

    6.派生与覆盖

    (1).什么是派生

      当父类提供的属性无法完全满足子类的需求时,子类可以增加自己的属性或非法,或者覆盖父类已经存在的属性,此时子类称之为父类的派生类;

    (2).什么是覆盖

      在子类中如果出现于父类相同的属性名称时,根据查找顺序,优先使用子类中的属性,这种行为也称为覆盖。

    7.经典类与新式类

      即使没有直接继承关系,super仍然会按照mro继续往后查找,而第一种方式明确指定了要到哪一个类中去查找,找不到则直接抛出异常。

    8.组合
      软件重用的重要方式除了继承之外还有另外一种方式,即:组合。组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合。

    组合与继承都是有效地利用已有类的资源的重要方式。但是二者的概念和使用场景皆不同,

    (1).继承的方式

    通过继承建立了派生类与基类之间的关系,它是一种'是'的关系,

    当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好。

    (2).组合的方式

    用组合的方式建立了类与组合的类之间的关系

    9.继承实现的原理

      如果继承关系为菱形结构,那么属性查找的方式有两种,分别是深度优先和广度优先,

      MRO列表并遵循如下三条准则: 1.子类会先于父类被检查 2.多个父类会根据它们在列表中的顺序被检查 3.如果对下一个类存在两个合法的选择,选择第一个父类 。

    2.oop三大特征之封装

    1.封装的简单介绍

      封装指的是隐藏对象的属性和实现细节,仅对外公开接口,控制程序中属性的访问权限;python中的权限有两种:一种是公开,外界可以直接访问和修改;另一种是不能直接由外界进行修改,但可以通过类完成修改。

    2.封装的必要性及封装方法

      封装的目的是为了限制属性的访问和修改,用来保护数据安全。

    封装方法:

      一个大的功能模块是由很多小功能组合而成的,而这些小模块对用户来说是没有意义的,所以封装的目的是为了隔离复杂度 。在属性名前添加两个下划线__。可将其设为私有。

    (1)封装数据属性:网页中重叠

  • 相关阅读:
    线程中常见的方法
    停止线程方式
    线程间的通信_多生产者多消费者问题_JDK1.5新特性_Lock
    1-为什么java的main方法必须是静态的
    45-机器设计问题(深搜)
    44-最大差值三角形
    23-吝啬的国度(vector+深搜)
    43-八数码
    41-安排车辆
    41-邮差送信(dfs)
  • 原文地址:https://www.cnblogs.com/blue-tea/p/11246599.html
Copyright © 2020-2023  润新知