注册 登录
Python基础教程

第一章: 环境搭建,安装Python

第二章: 挑选一款趁手的IDE

第三章: 计算机基础知识

第四章: 命令行基础知识

第五章: 从全局把握Python

第六章: Python语言基础

第七章: Python流程控制

第八章: Python数据类型与运算

第九章: Python字符串类型

第十章: Python列表类型

第十一章: Python元祖类型

第十二章: Python字典类型

第十三章: Python集合类型

第十四章: Python函数处理

第十五章: Python文件处理

第十六章: Python面向对象

第十七章: Python异常处理

第十八章: Python模块处理

第十九章: Python项目实战

首页 > Python基础教程 > 第十六章: Python面向对象 > 16.2节: 再理解面向对象

16.2节: 再理解面向对象

薯条老师 2020-05-25 07:30:22 207103 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学,可以报名线上直播班,与线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

16.2.1 理解面向对象

在上节教程中讲到了面向过程,面向过程是把问题的求解过程分解为多个步骤,而面向对象关注的是问题本身,将其视为一个整体,并抽象为一种数据类型。在面向对象的程序设计中,通过定义类类型来进行抽象。

抽象是概括和归类的意思,抽象一种数据类型是说将一类事物的共性概括起来。

理解面向对象,需要思考两个核心问题:什么是对象?什么是面向对象?

(1) 什么是对象?

Python中的对象是指类的一个具体实例,而类代表的是一类具有相同属性和行为的事物。举个简单的例子,我们可以定义一个叫做Dog的类,Dog代表着狗这种动物的共性。而一条具体的狗就是对象,比如你在街上看到的一条流浪狗,这条流浪狗就是狗的具体实例,它一定具备狗这种动物的共性,否则它就不是狗。

在Python中通过class关键字来定义类

(2) 什么是面向对象?

面向是一个动词,面向对象是指对某一类事物进行描述,概括,然后以计算机中的编程语言进行建模,将生活中的一切事物对象化。 面向对象编程的核心是抽象,那么什么是抽象呢?简单地解释,抽象就是概括和归类,这里的概括是对共性的概括。

薯条老师家里养了一只短尾猫,那么,就以猫来对面向对象进行举例。倘以对象的角度来看世界,那么一切皆对象。自然,这只猫也是对象,那么在面向对象的程序设计过程中,我们可以使用Java语言来对猫进行对象化:自定义一个Cat类对猫进行抽象,并定义Cat类型的属性和操作方法。

进一步理解面向对象,同学们需理解面向对象的三个核心特征:封装,继承,多态。

16.2.2 面向对象的三大特征

(1) 什么是封装?

封装说的通俗一点,就是藏起来。面向对象中的封装,是指将数据类型的属性和方法的实现细节藏起来,只需提供对数据类型进行操作的接口。对于封装和接口,下图的插座和电源线的关系就很形象:

图片.png 

插座对外隐藏了其内部的实现细节,对外提供了供电源线进行电路连接的接口。 封装的实质是将数据类型与数据类型的使用者进行隔离。将内部属性进行隔离,保障了数据的完整性。将数据类型操作方法的实现细节进行隔离,隔离了实现过程的复杂度。封装的另外一个重要性是便于代码的复用,比如将需要重复执行的代码块封装为一个函数。

(2) 继承

“子承父业”就包含继承的概念。小王对父亲老王进行继承以后,就可以获得老王的财产。面向对象中的继承也是一样的道理,比如A类型继承于B类型,那么A类型就获得了B类型的属性和方法。A类就叫做B类的子类,B类就是A类的父类。

从这一点也可以看出,计算机中的复杂概念是对生活经验的提炼和模拟。我们在理解复杂的概念时,可以多进行发散思考,联想生活中出现的事物。

在面向对象设计中,可以通过继承来实现复用和扩展。只是继承,而不进行扩展,那么这样的设计多半是糟糕和无用的设计。如同小王继承了老王的财产,如果只是用来进行挥霍,而不思进取,那么小王一定会坐吃山空,沦为一个败家子。

(3) 多态

多态是指同一事物存在多种状态或行为。在面向对象程序设计中,多态一般是指父类方法的多种不同实现方式。如何对父类方法进行多种不同的实现?可以通过继承的方式,即多个子类对从父类继承的方法进行不同的实现。

子类对父类方法进行不同的实现以后,将子类再赋值给父类对象,父类对象再根据子类对象的类型,在运行时调用同一方法的不同实现,这样就实现了多态。

初学者在理解封装,继承,多态时,会觉得很抽象,这是很正常的。在后面的教程中,会以代码示例来帮助同学们理解何为面向对象中的封装,继承,多态。在本节内容中,只需对面向对象的三大特征建立初步的认识,做到“差不多理解”即可。

16.2.3 面向对象之SOLID

SOLID是面向对象设计五大基本原则的首字母缩写, 在开发面向对象的应用程序时,遵循SOLID原则可以让代码更加健壮和易于扩展。下表所示为SOLID对应的五大基本原则:

设计模式原则

描述

单一职责原则

一个类或一个接口应该保持功能单一,仅有一个引起它变化的原因

开闭原则

简言之即对修改关闭,对扩展开放

里氏替换原则

任何使用基类的地方 ,也可以用其子类来替换,不会影响程序的执行结果

接口隔离原则

客户端不应依赖它不需要的接口;一个类对另一个类的依赖只需建立在最小的接口上

依赖反转原则

高层模块不应依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。 依赖反转原则的核心是面向接口编程


读者在学习面向对象的程序设计时,无需死记硬背这几个设计原则。好的学习方法是先记住大体轮廓,理解其基本概念,然后再结合代码实例来深入理解,逐个突破。在后面的教程中,笔者会结合实例来对设计模式的SOLID进行讲解。

16.2.4 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:

关注微信公众号.jpg












欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录