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

    面向过程:核心是过程二字,过程指的是解决问题的步骤,类似流水线,机械的思维方式

    优点:复杂的问题流程化,进而简单化

    缺点:一次只能解决一个问题

    应用场景:对扩展性要求较低的软件,如系统内核,脚本程序

    面向对象:一切皆对象,对象指的是具有某些属性与行为的结合体,是客观存在,是类的具现化

    面向过程的方式:

    有条不紊的解决问题

    面向对象的方式:

    生成对象由对象解决问题

    面向对象:

      优点:不必考虑实现方式

      可扩展性提高

      各对象之间耦合度低,不会相互产生影响

      可维护性高

    缺点:面向对象的复杂度比面向过程高

      无法预知执行结果

    使用场景:需要较高的扩展性时,直接与用户交互的程序,

    面向对象编程的本质:使用不同的对象完成程序

    类:类型类别,一个抽象概念,类是根据相似属性与行为的对象抽象

    类包含一系列相同特征和技能的对象

    对象是类的实例

    生活中先有对象,抽象对象得到类

    程序中先有类,根据类再创建对象

    类的命名方式:大驼峰体,即每个单词的首字母大写

    通过类创建对象时,每个对象的内存地址不同,创建对象,计算机会申请一个新的内存空间来存放它的内容

    存储属性的位置有两个,类中,对象中

    当每个对象的某个特征都相同时放到类中

    当特征不同时放到对象中

    可以通过__dict__获取一个对象包含的内容

    属性的访问顺序:

    当对象不存在时,会到类中寻找

    如果对象存在这个属性时优先访问对象中的属性

    创建一个类,会产生名称空间,存储类中名称和值的绑定关系

    创建一个对象时,产生名称空间存储对象中名称与值的绑定关系

    类可以作为对象的模板,所有属于同一个类的对象,都具备类中的公共内容

    即使类中什么都没有,也存在一些从父类object中继承自带的属性,

    类的初始化函数:__init__(self),该函数会在调用类时自动执行,self参数必须有,表示要进行初始化的对象,系统会自动传值

    绑定方法:将对象与函数进行绑定

    对象本质是一种存放数据的容器,函数就是用于处理数据的代码

    默认情况下:类中定义的函数都是绑定方法,共同点是,都会将对象作为第一个参数self

    当用对象调用类中的方法时,默认将对象传入方法中

    而用类名调用时,需要手动传入对象

    绑定方法分为两种,绑定给对象与绑定给类

    绑定给类的方法使用一种为classmethod的装饰器,必须有一个参数

    对象绑定方法:可以使用对象来调用,也可以使用类名来调用

    在对象调用时会自动传入参数为对象本身

    类调用时不会自动传参

    类的绑定方法:对象与类都可以调用,并且自动传参

    如何定义对象绑定方法与类的绑定方法:

    调用的区别,当要处理的数据包含在类中时,就应该绑定给类

    当要处理的数据包含对象中的属性时就应该绑定给对象

    类的绑定方法与对象的绑定方法的相同与不同:

    相同点:

      都会自动传值

      都可以被类和对象调用

    不同点:

      对象绑定方法在对象调用时,传递的参数为对象本身,而类绑定方法自动传的是类

      第一个参数分别为:cls self

    为什么要绑定?

    传递参数必须手动传递有可能传参顺序发生错误

    每次处理数据都需要手动传参

    当腰处理的数据非常多,就不能再定义为变量,你可以使用列表来存储要处理的数据

    之所以绑定,简化代码提高效率

    非绑定方法:

    在类中,即不绑定类也不绑定对象的方法

    特点:没有自动传参的效果,类和对象都能调用,就是一个普通函数

    当没有访问类和对象的数据的需求时,就可以作为一个非绑定方法

    使用场景较少

  • 相关阅读:
    C/C++中volatile关键字详解(转)
    Spring中 @Autowired标签与 @Resource标签 的区别(转)
    [转]各种互斥量的总结
    nginx限制ip访问(转)
    HDU 4833 Best Financing (DP)
    HDU 4832 Chess (DP)
    HDU 4831 Scenic Popularity
    POJ 2155 Matrix (二维线段树)
    POJ 2155 Matrix (二维树状数组)
    HDU 4819 Mosaic (二维线段树)
  • 原文地址:https://www.cnblogs.com/suncunxu/p/10115283.html
Copyright © 2011-2022 走看看