zoukankan      html  css  js  c++  java
  • day21继承

    昨日回顾

    1、面向对象

    ​ 是一种编程思想 核心就是对象

    将程序看做一堆对象的集合 程序的功能就是控制调度对象来交互完成

    2、为什么使用面向对象

    ​ 优点 扩展性高 灵活性 重用性、

    ​ 缺点 程序结构更加复杂 无法预知执行结果

    3、类 和对象

    ​ 类是一系列具备相同特征和行为的对象的集合体 是一种抽象概念

    对象 是具备某些特征和行为的集合体 是具体存在的某个事物

    类包含多个对象

    对象属于某个类型

    4、定义

    5、属性的正确使用

    对象公共的部分放到类中

    每个对象独有的放在对象自己的名称空间中

    属性的增删改查

    6、初始化函数

    ​ 用来给对象附初始值 和一些别的初始化逻辑

    ​ 不能返回值 只能返回none

    7、绑定方法

    ​ 对象和函数 对象的绑定方法

    当使用对象调用时 会自动传入对象本身作为第一个参数

    当使用类调用时 那就是普通函数需要自己传值

    ​ 类和函数 类的绑定方法

    ​ 用类或对象调用会传入类本身

    ​ @classme

    8、非绑定方法

    ​ 场景

    ​ 当函数的逻辑中需要访问对象时 那就绑定给对象 仅需要类中数据就绑定给类

    属性的查找顺序 先找对象自己的名称空间 找不到在找类的名称空间 类找不到他的父类。

    今日内容

    oop的三大特征之一

    封装 继承 多态

    继承

    什么是继承

    ​ 继承是一种关系 通过继承关系,继承的一方可以直接使用被继承一方已经有的东西,被继承的一方称之为父,继承的一方称之为子。

    在python3中创建类时必然继承另一个类 如果没有显示指定父类,则默认继承object;object是跟类 所有类都直接或间接的继承object。

    为什么要使用继承

    ​ 1、减少代码重复 提高重用性

    ​ 2、为多态提供必要的支持

    在程序中 ,继承描述的就是类和类之间的关系

    语法

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

    抽象与继承(先抽象再继承):

    什么是抽象

    ​ 将多个子类中相同的部分 进行抽取,形成一个新的类 这个过程也称之为抽象过程。

    查找顺序

    ​ 先找对象自己的----所在类中----找父类----父类的父类----Object

    抽象的使用场景

    继承是基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象这个过程,才能通过继承的方式去表达出抽象的结构。

    抽象只是分析和设计的过程,一个动作或者说一个技巧,通过抽象可以得到的类

    1564060859005

    派生

    当一个子类中出现了与父类中不同的内容时,这个子类就称之为派生类

    通常子类都会写一些新的代码 不可能和父类完全一样 即通常都是派生类

    所以派生类指的就是子类

    覆盖

    当子类出现了与子类与父类名称完全一致的属性或是方法

    练习 实现一个可以限制元素类型的容器(字典 列表 元祖 集合 字符串)

    子类中访问父类的内容

    语法

    方式一:
    super(当前类名称,self).你要调的父类的属性或方法
    方式二:
    super().你要调的父亲的属性或方法
    方式三:
    类名称.你要调的父类的属性或方法(self)
    方式三与继承无关
    	
    

    强调

    ​ 当你继承一个现有的类 并且你覆盖了父类的init方法时,必须在初始化方法的第一行调用父类的初始化方法,并传入父类所需的参数

    组合

    也就一种关系 描述两种对象之间是什么 有什么的关系

    将一个对象作为另一个对象的属性 即什么有什么

    组合的目的

    也就是为了重用现有的代码

    什么时候使用继承分析两个类的关系 到底是不是 什么是什么的关系

    什么时候使用组合 如果两个类之间没有什么太大关系 完全不属于同类

    另外组合相比继承 耦合度更低了

    菱形继承

    ​ 首先明确python支持多继承

    补充 新式类与经典类

    python3中任何类都是直接或者间接的继承Object

    新式类 任何显式或隐式地继承自Object的类就称之为新式类 python3中全都是新式类

    经典类 既不是Object的子类 仅在python2中出现

    当出现了菱形继承时,新式类,先深度,当遇到共同父类时就广度

    新式类 就是深度优先

  • 相关阅读:
    angular2
    angular1
    JavaScript随笔1
    鼠标样式
    清除浮动
    css-父标签中的子标签默认位置
    [Leetcode] Decode Ways
    [Java] 利用LinkedHashMap来实现LRU Cache
    LinkedHashMap和HashMap的比较使用(转)
    [Java] java.util.Arrays 中使用的 sort 采用的算法 (转)
  • 原文地址:https://www.cnblogs.com/panyi2019/p/11265602.html
Copyright © 2011-2022 走看看