一、基本概念
1. 面向过程
(1) 概念:以过程为中心的编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
(2) 优点:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。因为程序的流程很清楚,按着模块与函数的方法可以很好的组织。
(3) 缺点:只能用来解决一个问题,代码牵一发而动全身。
(4) 应用:用于基本很少改变的场景,著名的例子有Linux内核、git、以及Apache HTTP Server等。
2. 面向对象
(1) 概念:程序设计的核心是对象,面向对象的方法主要是把事物给对象化,对象包括属性与方法。
(2) 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
(3) 缺点:可控性差,无法像面向过程的程序设计一样可以精准的预测问题的处理流程与结果。
(4) 应用:需求经常变化的软件,一般需求的变化都集中在用户层,如互联网应用、企业内部软件以及游戏等。
二、面向对象中的名词解析
1. 类:类就是一个模板,模板里可以包含多个函数,每个函数都能实现一些功能。
2. 对象:根据模板(类)创建的实例,通过这个实例(对象)可以执行类中的函数。
3. 属性:类中所定义的变量
4. 方法:类中所定义的函数
5. 实例化:通过类创建对象的过程
6. 总结:对象的抽象是类,类的具体化就是对象;也可以说类的实例化是对象,对象是类的实例。
三、特征
1. 封装
(1) 概念:封装是将对象运行时所需的资源封装在程序对象中。简单来说,就是将内容封装起来,以后再去调用被封装的内容。
(2) 调用封装的内容有2种方法:
——通过对象直接调用
——通过self间接调用
2. 继承
(1) 概念:继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。
(2) 多继承
注:Python的类可以继承多个类,而Java和C#中则只能继承一个类
Python的类如果继承了多个类,那么其寻找方法的方式有2种:
3. 多态
概念:多态指同一个实体同时具有多种形式,在赋值之后,不同的子类对象调用相同的父类方法,产生的执行结果不同。