《Python面向对象基本概念》由会员分享,可在线阅读,更多相关《Python面向对象基本概念(18页珍藏版)》请在金锄头文库上搜索。
1、PythonPython面向对象基本概念面向对象基本概念6.1 面向面向对象基本概念象基本概念n n面面面面向向向向对对对对象象象象的的的的方方方方法法法法,使使使使我我我我们们们们分分分分析析析析、设设设设计计计计和和和和实实实实现现现现一一一一个个个个系系系系统统统统的的的的方方方方法法法法尽尽尽尽可可可可能能能能自自自自然然然然地地地地使使使使用用用用我我我我们们们们在在在在生生生生活活活活中中中中用用用用到到到到的的的的以以以以对对对对象象象象为为为为中中中中心心心心的的的的思思思思想想想想,分分分分析析析析、认认认认识识识识、设设设设计计计计一一一一个个个个系统的方法。系统的方法。系
2、统的方法。系统的方法。n n面向对象和面向过程都是一种思想。面向对象和面向过程都是一种思想。面向对象和面向过程都是一种思想。面向对象和面向过程都是一种思想。n n面向过程强调的是功能行为面向过程强调的是功能行为面向过程强调的是功能行为面向过程强调的是功能行为n n面面面面向向向向对对对对象象象象将将将将功功功功能能能能封封封封装装装装进进进进对对对对象象象象,强强强强调调调调具具具具备备备备了了了了功功功功能能能能的对象。的对象。的对象。的对象。n n面向对象是基于面向过程的。面向对象是基于面向过程的。面向对象是基于面向过程的。面向对象是基于面向过程的。n n从执行者变成指挥者。从执行者变成指
3、挥者。从执行者变成指挥者。从执行者变成指挥者。6.1 面向面向对象基本概念象基本概念n n对对对对象象象象: :现现现现实实实实世世世世界界界界中中中中某某某某个个个个具具具具体体体体的的的的物物物物理理理理实实实实体体体体的的的的逻逻逻逻辑辑辑辑表表表表示示示示( (抽象)或者包含有内部状态的概念。抽象)或者包含有内部状态的概念。抽象)或者包含有内部状态的概念。抽象)或者包含有内部状态的概念。n n如如如如:冰冰冰冰箱箱箱箱是是是是拥拥拥拥有有有有外外外外形形形形、尺尺尺尺寸寸寸寸、颜颜颜颜色色色色等等等等外外外外部部部部特特特特性性性性和和和和开开开开、关关关关、存存存存储储储储等等等等功
4、功功功能能能能的的的的实实实实体体体体;而而而而这这这这样样样样一一一一个个个个实实实实体体体体,在在在在面面面面向向向向对对对对象象象象的的的的程程程程序序序序中中中中,就就就就可可可可以以以以表表表表达达达达成成成成一一一一个个个个计计计计算算算算机机机机可理解、可操纵、具有一定属性和行为的对象。可理解、可操纵、具有一定属性和行为的对象。可理解、可操纵、具有一定属性和行为的对象。可理解、可操纵、具有一定属性和行为的对象。抽象数据类抽象数据类抽象数据类抽象数据类人脑人脑人脑人脑实体实体实体实体现实世界现实世界现实世界现实世界计算机逻辑的实现计算机逻辑的实现计算机逻辑的实现计算机逻辑的实现映射
5、映射映射映射对象对象对象对象类类类类计算机计算机计算机计算机6.1 面向面向对象基本概念象基本概念6.1 面向面向对象基本概念象基本概念n n掌掌掌掌握握握握面面面面向向向向对对对对象象象象的的的的困困困困难难难难之之之之处处处处在在在在于于于于思思思思路路路路的的的的转转转转换换换换,以以以以对对对对象世界的思维方式来思考问题。象世界的思维方式来思考问题。象世界的思维方式来思考问题。象世界的思维方式来思考问题。n n定义类和建立对象是面向对象编程的主要任务。定义类和建立对象是面向对象编程的主要任务。定义类和建立对象是面向对象编程的主要任务。定义类和建立对象是面向对象编程的主要任务。6.1 面
6、向面向对象基本概念象基本概念 n n类和对象的关系类和对象的关系类和对象的关系类和对象的关系n n把相似的对象抽象成一个类。把相似的对象抽象成一个类。把相似的对象抽象成一个类。把相似的对象抽象成一个类。n n在在在在软软软软件件件件中中中中,类类类类,就就就就是是是是一一一一个个个个模模模模板板板板,它它它它定定定定义义义义了了了了通通通通用用用用于于于于一一一一个个个个特特特特定定定定种种种种类类类类的的的的所所所所有有有有对对对对象象象象的的的的状状状状态态态态(变变变变量量量量)和和和和行为(方法)。行为(方法)。行为(方法)。行为(方法)。n n类是创建对象的模板,对象是类的实例。类是
7、创建对象的模板,对象是类的实例。类是创建对象的模板,对象是类的实例。类是创建对象的模板,对象是类的实例。汽车设计图第1辆第2辆第3辆图图 汽车类与汽车的实例汽车类与汽车的实例 6.1 面向面向对象基本概念象基本概念 6.1 面向面向对象基本概念象基本概念 n n面向对象编程的主要特点面向对象编程的主要特点面向对象编程的主要特点面向对象编程的主要特点n n封封封封 装装装装 性性性性 ( EncapsulationEncapsulation) : 实实实实 现现现现 模模模模 块块块块 化化化化( modularitymodularity) 和和和和 信信信信 息息息息 隐隐隐隐 藏藏藏藏 (
8、information information hidinghiding),),),),有利于程序的可移植性有利于程序的可移植性有利于程序的可移植性有利于程序的可移植性。n n继继继继承承承承性性性性(InheritanceInheritance):可可可可以以以以定定定定义义义义一一一一套套套套对对对对象象象象之之之之间间间间的的的的层层层层次次次次关关关关系系系系,下下下下层层层层的的的的对对对对象象象象继继继继承承承承了了了了上上上上层层层层对对对对象象象象的的的的特特特特性性性性,籍籍籍籍此此此此可可可可以以以以实实实实现现现现程程程程序序序序代代代代码码码码重重重重用用用用,并并并并
9、且且且且有有有有效效效效地地地地组组组组织织织织整整整整个个个个程序。程序。程序。程序。n n多多多多态态态态性性性性(PolymorphismPolymorphism):根根根根据据据据程程程程序序序序运运运运行行行行时时时时对对对对象象象象的的的的实实实实例例例例类类类类型型型型来来来来选选选选择择择择不不不不同同同同的的的的信信信信息息息息处处处处理理理理。籍籍籍籍此此此此可可可可以以以以提提提提高程序的灵活性。高程序的灵活性。高程序的灵活性。高程序的灵活性。n n信信信信息息息息隐隐隐隐藏藏藏藏电电电电视视视视内内内内有有有有很很很很多多多多复复复复杂杂杂杂零零零零件件件件,通通通通过
10、过过过各各各各种种种种按按按按钮钮钮钮将将将将内内内内部部部部的的的的复复复复杂杂杂杂结结结结构构构构给给给给隐隐隐隐藏了。藏了。藏了。藏了。n n简简简简化化化化操操操操作作作作只只只只需需需需通通通通过过过过调调调调频频频频和和和和音音音音量量量量等等等等少少少少量量量量按按按按钮钮钮钮,就就就就可以操纵电视。可以操纵电视。可以操纵电视。可以操纵电视。n 程程程程序序序序的的的的基基基基本本本本封封封封装装装装单单单单元元元元是是是是类类类类,通通通通过过过过类类类类的的的的封封封封装装装装,既既既既可可可可以将代码单元化,又达到了信息隐藏的目的。以将代码单元化,又达到了信息隐藏的目的。以
11、将代码单元化,又达到了信息隐藏的目的。以将代码单元化,又达到了信息隐藏的目的。n 封封装装:数数据据的的内内部部表表示示通通过过定定义义在在数数据据上上的的操操作作对外隐藏起来。对外隐藏起来。6.1 6.1 面向对象基本概念面向对象基本概念封装封装 n n封装把对象的所有组成部分组合在一起,封装定封装把对象的所有组成部分组合在一起,封装定封装把对象的所有组成部分组合在一起,封装定封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方义程序如何引用对象的数据,封装实际上使用方义程序如何引用对象的数据,封装实际上使用方义程序如何引用对象的数据,封装实际上使用方法将类的
12、数据隐藏起来,控制用户对类的修改和法将类的数据隐藏起来,控制用户对类的修改和法将类的数据隐藏起来,控制用户对类的修改和法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。访问数据的程度。访问数据的程度。访问数据的程度。 私有数据私有数据 方法方法 方法方法数据数据对象对象A对象对象B公有数据公有数据 6.1 面向面向对象基本概念象基本概念封装封装 自然界通过继承而繁衍发展自然界通过继承而繁衍发展 程序中的继承是程序中的继承是从抽象到具体从抽象到具体的过程的过程 6.1 面向面向对象基本概念象基本概念继承承n n什么是子类什么是子类什么是子类什么是子类? ?n n子类是作为另一个类的扩充或
13、修正所定义的一个类。子类是作为另一个类的扩充或修正所定义的一个类。子类是作为另一个类的扩充或修正所定义的一个类。子类是作为另一个类的扩充或修正所定义的一个类。bicycle(super class)Mountain bikesRacing bikesTandem bikessub class 6.1 面向面向对象基本概念象基本概念继承承n n继承是子类利用父类中定义的方法和变量就像它继承是子类利用父类中定义的方法和变量就像它继承是子类利用父类中定义的方法和变量就像它继承是子类利用父类中定义的方法和变量就像它们属于子类本身一样。们属于子类本身一样。们属于子类本身一样。们属于子类本身一样。n n继
14、承关系是传递的。继承关系是传递的。继承关系是传递的。继承关系是传递的。n n若若若若类类类类C C继继继继承承承承类类类类B B,类类类类B B继继继继承承承承类类类类A A时时时时,则则则则类类类类C C既既既既有有有有从从从从类类类类B B继继继继承承承承下下下下来来来来的的的的属属属属性性性性和和和和方方方方法法法法,也也也也有有有有从从从从类类类类A A继继继继承承承承下下下下来来来来的的的的属属属属性性性性和和和和方方方方法法法法,还还还还可可可可以以以以有有有有自自自自己己己己新新新新定定定定义义义义的的的的属属属属性性性性和方法。和方法。和方法。和方法。 6.1 面向面向对象基本
15、概念象基本概念继承承n n继继继继承承承承简简简简化化化化了了了了人人人人们们们们对对对对事事事事物物物物的的的的认认认认识识识识和和和和描描描描述述述述,能能能能清清清清晰晰晰晰体体体体现相关类间的层次结构关系。现相关类间的层次结构关系。现相关类间的层次结构关系。现相关类间的层次结构关系。n n提提提提供供供供软软软软件件件件复复复复用用用用功功功功能能能能。若若若若类类类类B B继继继继承承承承类类类类A A,建建建建立立立立类类类类B B时时时时只只只只需需需需要要要要再再再再描描描描述述述述与与与与基基基基类类类类(类类类类A A)不不不不同同同同的的的的少少少少量量量量特特特特征征征
16、征(数数数数据据据据成成成成员员员员和和和和方方方方法法法法)。可可可可减减减减少少少少代代代代码码码码和和和和数数数数据据据据的的的的冗冗冗冗余余余余度,大大增加程序的重用性。度,大大增加程序的重用性。度,大大增加程序的重用性。度,大大增加程序的重用性。 6.1 面向面向对象基本概念象基本概念继承承n n多多多多态态态态即即即即“有有有有多多多多种种种种形形形形式式式式”。意意意意味味味味着着着着根根根根据据据据对对对对象象象象(类类类类)类类类类型型型型的不同而表现出不同的行为。的不同而表现出不同的行为。的不同而表现出不同的行为。的不同而表现出不同的行为。n n多多多多态态态态即即即即多多
17、多多种种种种形形形形态态态态,在在在在运运运运行行行行时时时时确确确确定定定定其其其其状状状状态态态态,在在在在编编编编译译译译阶阶阶阶段无法确定其类型,这就是多态。段无法确定其类型,这就是多态。段无法确定其类型,这就是多态。段无法确定其类型,这就是多态。 n nPythonPythonPythonPython中中中中的的的的变变变变量量量量是是是是弱弱弱弱类类类类型型型型的的的的,在在在在定定定定义义义义时时时时不不不不用用用用指指指指明明明明其其其其类型,它会根据需要在运行时确定变量的类型。类型,它会根据需要在运行时确定变量的类型。类型,它会根据需要在运行时确定变量的类型。类型,它会根据需
18、要在运行时确定变量的类型。 6.1 面向面向对象基本概念象基本概念多多态n n在在在在PythonPythonPythonPython中中中中很很很很多多多多地地地地方方方方体体体体现现现现多多多多态态态态的的的的特特特特性性性性,比比比比如如如如 内内内内置置置置函函函函数数数数len(object)len(object)len(object)len(object),lenlenlenlen函函函函数数数数不不不不仅仅仅仅可可可可以以以以计计计计算算算算字字字字符符符符串串串串的的的的长长长长度度度度,还可以计算列表、元组等对象中的数据个数。还可以计算列表、元组等对象中的数据个数。还可以计算
19、列表、元组等对象中的数据个数。还可以计算列表、元组等对象中的数据个数。n n在在在在运运运运行行行行时时时时通通通通过过过过参参参参数数数数类类类类型型型型确确确确定定定定其其其其具具具具体体体体的的的的计计计计算算算算过过过过程程程程,正正正正是是是是多态的一种体现。多态的一种体现。多态的一种体现。多态的一种体现。 6.1 面向面向对象基本概念象基本概念多多态6.1 面向面向对象的基本特征象的基本特征n n封装与多态区别封装与多态区别封装与多态区别封装与多态区别n n封封封封装装装装可可可可以以以以让让让让用用用用户户户户不不不不关关关关心心心心对对对对象象象象如如如如何何何何构构构构建建建建而而而而直直直直接接接接进进进进行使用。行使用。行使用。行使用。n n多多多多态态态态可可可可以以以以让让让让用用用用户户户户对对对对于于于于不不不不知知知知道道道道什什什什么么么么类类类类(对对对对象象象象类类类类型型型型)的对象进行方法调用。的对象进行方法调用。的对象进行方法调用。的对象进行方法调用。结束语结束语谢谢大家聆听!谢谢大家聆听!18