【面向对象编程】 特征:封装、继承和多态。
面向对象
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
- 比如:数字、字符、列表、元组、字典、函数等
- 对象的类型:数字类型、字符类型等(type函数查看对象的数据类型)
- 数字、字符、元组是不可改变值的对象
- 对象的特征也称为属性,比如长度等
- 方法:类中定义的函数叫做方法,没在类中定义的叫函数
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 也是一种对象,是用来创建对象的对象(id函数识别对象在内存中的地址)
- 对象所具有的行为也可以称作方法,比如对字符串进行拆分、方法的本质是函数
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- 局部变量:定义在方法中的变量,只作用于当前实例的类。
- 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
- 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
- 实例化:创建一个类的实例,类的具体对象。(把用类创建对象的过程称为实例化)
- 模块:只一整个.py文件中的类、函数等
封装
什么是封装:封装是指将数据与具体操作的实现代码放在某个对象内部,就是将类或者是函数中的某些属性限制在某个区域之内,外界只能通过接口使用该对象,无法直接调用。
封装数据的主要原因是:保护隐私 (不能直接调用、修改对象内部的私有信息)
封装方法的主要原因是:隔离复杂度 (能隐藏对象实现细节,使代码更易维护)
拓展:
1、类通过将函数和变量封装在内部,实现了比函数更高一级的封装
2、在编程语言里,对外提供的接口(接口可理解为了一个入口),就是函数,称为接口函数,这与接口的概念还不一样,接口代表一组接口函数的集合体。
封装的两个层面:
1、第一种(什么都不用做):创建类和对象会分别创建二者的名称空间,我们只能用类名.或者obj.的方式去访问里面的名字,这本身就是一种封装。
2、第二种(定义私有化) : 类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,或者留下少量接口(函数)供外部访问。
提示:
Python中私有化的方法也比较简单,即在准备私有化的属性(包括方法、数据)名字前面加两个下划线即可。
类中所有双下划线开头的名称如__x都会自动变形成:_类名__x的形式:
继承:
继承:子类需要重用父类的属性和方法,子类中也可以定义自己的属性和方法。
通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类
python继承的优点:
实现代码复用,减少代码量;
拥有父类的所有功能,只需要编写子类附加的功能即可。
多态:
多态:以封装和继承为前提,不同的子类对象调用相同的方法,产生不同的执行结果
如果万事开头难 那请结局一定圆满 @ Phoenixy
-------------------------------------------------------------------------------------