zoukankan      html  css  js  c++  java
  • 面向对象复习

    面向对象总复习

    面向过程编程思想:

    ​ 核心是过程,过程指的是做事情的步骤,即先干什么再干什么。

    ​ 基于该编程思想编程,就好比一条流水线,一种机械式的思维方式。

    面向对象编程思想:

    ​ 核心是对象,对象指的是特征与机能的结合体。

    ​ 基于该编程思想编程,就好比创造世界,一种上帝式的思维方式。

    类:

    ​ 类指的是一系列对象相同的特征与技能的结合体。

    如何定义类:

    ​ 先抽象,抽取对象之间相同的特征与技能。

    ​ 再定义类。

    定义类时会发生哪些事情:

    ​ 会产生一个类的名称空间

    ​ 会把类内部的所有名字,扔进该名称空间中

    ​ 注意:定义类时,就会执行类内部的代码,若语法不正确,则会报错。

    如何产生对象:

    ​ 调用类会产生一个对象,调用类的过程称之为类的实例化,对象称之为类的一个实例化。

    ​ --init--:调用类时触发该方法。

    调用类时发生的事情:

    ​ 调用类会产生一个对象的名称空间。

    ​ 会触发--init--,接着把对象与括号内所有的参数都传给--init--(),把对象当作第一个参数。

    ​ 在--init--内部,可以给对象添加属性。

    对象的名字查找:

    ​ 先找对象自己的

    ​ 若对象没有,则去类中查找

    ​ 类中没有,则会默认继承object类中查找

    对象的绑定方法特殊之处:

    ​ 类来调用,类内部的方法只是一个普通的函数,函数需要几个参数就传几个。

    ​ 对象的绑定方法,由对象来调用,会自动把对象当作第一个参数传给该方法。

    ​ 注意:不同对象调用对象的绑定方法,会绑定给不同的对象

    一切皆对象:

    ​ 在python中一切皆对象。

    ​ python八大数据类型皆为对象:

    ​ n =10 #n = int(10)

    ​ list truple set dict float bool str int

    ​ 内置函数:filter

    继承:

    ​ 继承指的是新建类的方式,新建的类指的子类或派生类。

    ​ 子类可以继承一个父类,父类又可以称之为基类或超类。

    如何查找继承关系:

    ​ 必须遵循“先抽象,再继承”

    抽象:

    ​ 抽取相似的部分

    ​ --先抽象

    ​ 抽取相似的部分。

    ​ --再继承

    ​ 确认好之类与父类

    ​ 定义父类,父类中写类与类之间相同的特征与技能。

    ​ 子类继承与父类的属性

    class Father:

    ​ pass

    class Sub(Father):

    ​ pass

    继承关系:

    ​ 类是对象与对象之间的关系,类是一系列对象相同的特征与技能的结合体。

    ​ 继承是类与类之间的关系,子类与父类是一种从属关系。

    派生:

    ​ 派生值的子类继承父类的属性,并派生出自己的属性。

    子类可以派生出自己的属性,并重用父类的属性。

    ​ 直接调用类,类名.属性的方式重用父类的属性。

    ​ super(),super().指的是父类的名称空间,重用父类的属 性。

    ​ 注意:子类派生出与父类相同的属性,以子类的为主。

    在继承背景下,对象属性的查找顺序

    ​ 先从对象的名称空间中查找

    ​ 去类的名称空间中查找

    ​ 去父类的名称空间中查找

    ​ 去object里面查找,若没有则报错。

    新式类与经典类:

    ​ 继承object的类,都称之为新式类。

    ​ 在python2中,没有继承object的类,都称之为经典类。

    砖石继承:

    ​ 新式类:

    ​ 广度优先

    ​ 经典类:

    ​ 深度优先

    组合:

    ​ 组合指的是一个对象的属性,是另一个对象。

    ​ 组合的作用,与继承一样,都是解决代码冗余问题。

    ​ 继承的有点:

    ​ 编写代码的复杂程度没有组合高。

    ​ 继承的缺点:

    ​ 耦合度太高,可扩展性差。

    ​ 组合的优点:

    ​ 可以让类与类之间解耦合,可扩展性高。

    ​ 组合的缺点:

    ​ 编写的复杂程度高于继承

    封装:

    ​ 封装指的是把一堆属性,封装到对象中,对象就好比一个袋子,或是一个容器。

    ​ 优点:

    ​ 方便数据的存取

    ​ 可以通过“对象.属性”的方式获取与方法。

    ​ 封装是面向对象的核心

    访问机制:

    ​ 在类内部,凡事以——开头的属性,都会被隐藏,不轻易被直接调用,保证数据安全。

    ​ 比如与金钱,用户信息相关的操作

    property:

    ​ 让看起来像动词的方法,变成一名词的方式调用。

    ​ 方法名 不需要加括号调用。

    多态:

    ​ 同一样事物的多种形态。

    ​ 水:液态水,固态水,气态水

    ​ 多态的目的

    ​ 为了统一代码编写规范。

    ​ 多态的实现方式:

    ​ 继承:

    ​ 子类继承父类的特征与技能。

    ​ 抽象类:

    ​ 导入一个abc模块

    ​ 让父类继承一个ABCMeta

    ​ 给类内部所有的方法加上abc.abcstracmethod装饰器,子类继承抽象类,强制让子类继承父类的方法,缺一不可。

    ​ 鸭子类型

    ​ 只要长得像鸭子,你就是鸭子了

    class method:

    ​ 是一个装饰器,用来装饰在类内部的方法,可以让该方法变成类的绑定方法。

    ​ 对象绑定方法:

    ​ 由对象来调用,会把对象当作第一个参数传给该方法

    ​ 类的绑定方法:

    ​ 由类来调用,会把类当作第一个参数传给该方法。

    staticmethod:

    ​ 是一个装饰器,用来装饰在类内部的方法,可以让该方法变成非绑定方法。

    ​ 非绑定方法特殊之处:

    ​ 由谁来调用都是一个普通该函数。

    面向对象高级:

    ​ isintance:

    ​ 判断对象是否是一个类的实例

    ​ issubclass:

    ​ 判断一个类是否是另一个类的子类。

    ​ 反射:

    ​ 通过字符串操作对象或类的属性。

    ​ hasattr:判断字符串是否是一个对象的属性

    ​ getattr:通过字符串,获取一个对象或类的属性,若没有默认是none。(‘对象或类’,‘字符串属性名’,‘自定义的默认值’)

    ​ setattr:通过字符串,设置一个对象或类的属性。(‘对象或类’,‘字符串属性名’,‘属性的值’)

    ​ delattr:通过字符串,删除一个对象或类的属性。(’对象或类‘,’删除的字符串属性名‘)

    魔法方法(类的内置方法):

    ​ --Init--:在调用类时触发,在--new--没有返回一个空对象时不会触发。

    ​ --new--:在--init--执行前触发,必须要返回一个空对象。(-object.--new--(cls) #cls-->当前类)

    ​ --str--:在打印对象时触发。

    ​ --getattr--:会在对象.属性,不管属性有没有都会触发。

    加分项(面试会问):

    ​ --setattr--:会在对象.属性=属性值时触发。

    ​ --del--:会在对象被销毁前触发。

    ​ --call--:会调用对象时执行。

    ​ --delattr--:会在对象删除属性时触发。

    单例模式:

    ​ 单例模式指的是,调用一个类时实例化得到多个对象时,对象指向同一个名称空间。

    ​ --@classmethod

    ​ --new--

    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    JDK5并发(5) Semaphore
    JDK5并发(2) Locks-ReentrantLock
    Java Thread.interrupt interrupted
    Java Magic. Part 4: sun.misc.Unsafe
    Java Magic. Part 3: Finally
    Java Magic. Part 2: 0xCAFEBABE
    JDK5并发(1) Locks-AQS
    JDK Timer & TimerTask
    Git reset head revert 回滚
    c#解析Josn(解析多个子集,数据,可解析无限级json)
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863942.html
Copyright © 2011-2022 走看看