学过C++或者Java的同学一定了解过面向对象的相关内容,编程语言一般分为两种设计方式:面向对象、面向过程,早期的编程语言多是面向过程的,由多个过程组合在一起,而Python在设计的时候就是一种面向对象的语言,因此在Python是面向对象的编程语言。本节我们先来了解一下面向对象编程的概念。
首先我们要学习一下什么是对象,对象的英文是‘Object’,我们的生活中到处都是对象,你面前的电脑、手中的手机或者是书架上的书等等都是对象,对象是一种实际存在的实体。
我们在学习对象的时候可以把对象看成两个部分,一部分称为属性,一部分称为行为。
例如:我们买了一个闹钟,闹钟的材质是它的属性,当闹钟响起来的时候是它的行为。
我们在前面学习过的数据类型都属于类,类是Python的基本构造,在类中包含很多方法,我们在学习类的时候可以把类理解为一个教室,当我们创建了一个教室的时候,我们规定这个教室需要学习语文、数学和英语,当一个学生加入这个班级,就需要学习这三门科目,类往往是我们定义的一个载体,类中的成员会具有相同的属性和行为。
我们可以把所有汽车看成一个类,也可以把所有飞机看成一个类,类是一种比较抽象的概念,我们在定义的时候要根据实际情况来定义。
面向对象编程有三大特点:封装、继承和多态。
关于封装,我们可以举生活中的例子来学习一下,首先我们先从字面意思思考一下,封装就是把东西封了起来,当我们买了一台音响,音箱内部存在电路板、线路等结构,而我们使用者不需要去知道他的内部结构和使用原理,所以这些结构被封闭在箱体内部,在箱体外提供一些接口供我们连接,这些在音箱内部的属于封装起来的东西。
我们在写程序的时候也可以采用封装的理念,对于一些内容我们不提供接口来使用它们,它们属于内部的构造,属于不可变的内容,这种内容即为封装。
提到继承,大家一般都会联想到遗产,我们如果拿遗产来形容继承的话,在现实生活中的遗产继承一般是单对单的,如果是单对多的形式,那么多个人获取到的遗产很有可能是不一致的,而我们在程序里的继承是一种完全继承的关系。
我们可以把车看为一个对象,然后不管是奔驰车还是宝马车又或者是大众车,这些车都继承了车的全部属性和行为。我们把车看成一个类,给车定义了在地面驾驶和4个轮胎的属性,那么当宝马车来继承这个类,宝马车就获得了在地面驾驶和4个轮胎的属性,如果我们给车定义了高速行驶的行为,那么宝马车也继承了它高速行驶的行为。
我们在使用继承关系的时候,我们把车称为‘超类’或者‘父类’,而继承而来的宝马车称为‘子类’或者‘派生类’。
多态就是一个父类有多个属性,根据这些属性而衍生了多个子类,我们继续拿车来举例,我们可以给车定义两个属性,一个在马路上行驶,一个是在轨道上行驶,而这两种属性又都包括可载人,那么我们在定义子类的继承的时候,就可以定义了两种子类,一种是可载人的但在马路上行驶的汽车,一种是可载人但在轨道上形式的汽车,这种一个类衍生出多个子类,他们有公共属性也有私有属性的方式称为多态。
关于类和对象这两种概念,在我们学习编程的时候至关重要,不管是计算机的任何行业,一定离不开类和对象的使用,多多使用生活中的例子去思考一下什么是类和对象,下一节我们来学习类的定义和使用。