版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SSM框架应用于沈工高职考试系统的设计与实践第7章 面向对象编程面向对象的编程思想7.12类和对象1面向对象概述面向对象是当前流行的程序设计方法,其以人类习惯的思维方式,用对象来理解和分析问题,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的思维方法与过程。7.1面向对象的编程思想面向对象概述1面向对象方法的基本观点是一切系统都是由对象构成的,每个对象都可以接收并处理其他对象发送的消息,它们的相互作用、相互影响,实现了整个系统的运转。7.1面向对象的编程思想在现实世界中存在各种不同形态的事物,事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象间的关系来描述事物之间的联系,这种思想就是面向对象。面向对象概述1面向对象和面向过程区别17.1面向对象的编程思想面向对象概述1面向对象编程中,最重要的两个概念是对象和类。对象是现实生活中具体存在的事物,它可以看得见,摸得着。如:白色红旗H9、黑色长城坦克700…..他们都是汽车。和对象相比,类是抽象的,它是对一群具有相同特征和行为的事物的统称,比如汽车,可以理解为类。类和对象的关系即数据类型与变量的关系,根据一个类可以创建多个对象,而每个对象只能是某一个类的对象。属性:颜色品牌
型号汽车类属性值:
颜色:白色品牌:红旗型号:H9
汽车对象1属性值:
颜色:黑色品牌:长城
型号:坦克700
汽车对象2汽车对象3汽车对象47.1面向对象的编程思想类和对象2类的封装7.22实例方法1类和对象4实例变量3构造方法和析构方法6类变量5访问限制面向对象编程的基础是对象,类是对象的抽象,通过类,可以把对象特征描述(属性)和行为描述(方法)封装到一起,从而使程序结构更加清晰,这就是所谓的类的封装性。类由3部分组成:类名:类的名称,和变量及函数的命名规则相同属性:用于描述事物的特征,如汽车有颜色、品牌、型号等方法:用于描述事物的行为,比如汽车可以移动、鸣笛等7.2.1类和对象1类的定义创建一个汽车类:类定义的基本格式:class
类名:
属性名
=属性值
def
方法名(self):
方法体
注意:
类中方法的定义必须包含第一个参数self,表示实例化对象本身。classCar:pass1类的定义创建一个空类:7.2.1类和对象通过类创建对象的过程称为类的实例化对象的创建:
对象名=类名([参数列表])访问对象成员:
对象成员包括属性和方法
对象名.属性名
对象名.方法名()7.2.1类和对象2类的实例化def方法名(self[,参数列表]):
方法体1类的方法在类中定义方法与定义函数非常类似,不同之处是函数定义在类外,方法定义在类内,语法格式如下:7.2.2实例方法self表示的是实例化对象car1self.brand=brand,将品牌信息赋值给实例化对象car1的属性brand调用方法时,设置self以外的参数即可,设置brand参数所以调用car1的setBrand()方法可设置实例化对象的品牌信息7.2.2实例方法2实例构造方法默认可以不显示的定义7.2.3构造方法和析构方法1构造方法__init__(self)类的对象实例化时,自动调用默认构造方法如果显示的定义了构造方法__init__(self),创建对象时,调用该构造方法,否则调用默认构造方法构造方法按照有无参数(self除外)分为有参构造法和无参构造法无参构造方法中可以为属性设置初始值(例如:color=“白色”)无参构造方法__init__(self)7.2.3构造方法和析构方法1构造方法__init__(self)用该方法创建的所有对象都具有相同的初始值如果希望每次创建的对象都有不同的初始值,可以通过有参构造方法实现实例化对象是,调用__init__()时,只需要传self以外的参数即可有参构造方法__init__(self,参数1,参数2…)7.2.3构造方法和析构方法1构造方法__init__(self)销毁实例对象时自动调用析构方法python自动调用析构方法(__del__())释放资源手动销毁实例对象使用del对象2析构方法7.2.3构造方法和析构方法类的属性是以变量的形式存在的变量类型分为实例变量和类变量实例变量基本语法格式如下:self.变量名=值实例变量只能通过对象访问7.2.4实例变量私有属性:是指在类内可以直接访问而在类外无法直接访问的属性Python中规定,在定义属性时,如果一个类属性名是以__(两个下划线)开头,则该类属性为私有属性例如:car1.__color7.2.5访问限制1私有属性Python中规定,在定义类时,如果一个类方法名是以__(两个下划线)开头,则该类方法为私有方法私有方法在类内可以直接调用在类外无法直接调用的方法7.2.5访问限制2私有方法实例变量是必须在创建实例对象之后才能使用的变量,但在某些情况下,希望能通过类名来直接调用类中的变量或希望所有类能公有某个变量,这时就可以使用类变量。其语法格式如下:7.2.6类变量class类名():变量名=初始值7.2类的封装举个例子Forexample设计一个表示学生的类:Student,该类的属性包括name(姓名)、age(年龄)、scores(成绩,包含语文、数学和英语三科成绩,每科成绩的类型为整数),此外该类还有以下3个方法:(1)获取学生姓名的方法:get_name(),返回类型为str。(2)获取学生年龄的方法:get_age(),返回类型为int。(3)返回3门科目中最高的分数:get_course(),返回类型为int。类的继承7.32继承的语法格式1继承的定义4多继承3单继承在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。程序中的继承是指针对不同的事物向上归类、抽取。7.3.1继类的定义17.3.1继类的定义猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物波斯猫和加菲猫继承猫科,而边牧和吉娃娃继承自犬科。classCat:
def__init__(self,name,age):
self.name=name
self.age=age
defgetName(self):
returnself.name
defgetAge(self):
returnself.ageclassDog:
def__init__(self,name,age):
self.name=name
self.age=age
defgetName(self):
returnself.name
defgetAge(self):
returnself.age代码重复7.3.1继类的定义类的继承是指在一个现有类的基础上构建一个新的类构建出来的新类被称作子类,现有类被称作父类子类会自动拥有父类的属性和方法。继承可以解决编程中代码冗余问题,是实现代码重用的重要手段7.3.1继类的定义单继承多继承继承分成单继承和多继承:单继承:子类只有一个父类多继承:子类有两个或者更多父类7.3.1继类的定义定义子类时需要指定父类,其语法格式为:class子类名(父类名1,父类名2,…,父类名M):
语句1
语句2 …
语句N当M等于1时,则为单继承;当M大于1时,则为多重继承7.3.2继类的语法格式classAnimal:
def__init__(self,name,age):
self.name=name
self.age=age
defgetName(self):
returnself.name
defgetAge(self):
returnself.ageclassDog(Animal):
passclassCat(Animal):
passcat1=Cat("小花",2)
print(cat1.getName(),"年龄",cat1.getAge(),"了")
dog1=Dog("薯条",3)
print(dog1.getName(),"年龄",dog1.getAge(),"了")7.3.2继类的语法格式classAnimal:
def__init__(self,name,age):
self.name=name
self.age=age
defgetName(self):
returnself.name
defgetAge(self):
returnself.ageclassCat(Animal):
def__init__(self,name,age,color):
self.name=name
self.age=age
self.color=colorcat1=Cat("小花",2)
print(cat1.getName(),"年龄",cat1.getAge(),"了")子类中重新定义构造方法,实例化子类时,调用自己的构造方法cat1=Cat("小花",2,"白色")
print(cat1.getName(),"年龄",cat1.getAge(),"了颜色是",cat1.color)7.3.3单继承子类也可以添加自己的属性和方法7.3.3单继承classAnimal:
def__init__(self,name,age):
self.name=name
self.age=age
defgetName(self):
returnself.name
defgetAge(self):
returnself.ageclassCat(Animal):
defclimb(self):
print("小猫%s会爬树"%self.name)cat1=Cat("小花",2)
print(cat1.getName(),"年龄",cat1.getAge(),"了")
cat1.climb()父类的私有属性和方法不会被子类继承及访问7.3.3单继承classAnimal:
def__init__(self,name,age):
self.name=name
self.age=age
defgetName(self):
returnself.name
defgetAge(self):
returnself.agedef__CountFood(self):
print("这是父类的食物!")classCat(Animal):
defclimb(self):
print("小猫%s会爬树!"%self.name)cat1=Cat("小花",2)
print(cat1.getName(),"年龄",cat1.getAge(),"了")
cat1.climb()cat1.____CountFood多继承的语法如下:class子类类名(父类1,父类2):#定义子类的变量和方法子类需要继承多个父类的功能,这种情况称为多继承7.3.4多继承BankManagerinit董事会投票管理员工薪资总结:子类可以继承多个父类的方法和属性私有方法和属性不能访问子类中没有显式的定义构造方法,默认调用第一个父类的构造方法7.3.4多继承7.3类的继承举个例子Forexample定义一个Dog类定义构造方法,设置小狗颜色color定义类方法:小狗睡觉Sleep,方法中输出“**(颜色)的小狗在睡觉”定义子类:TeddyDog,继承父类子类中添加方法:小狗在奔跑(Run)实例化子类,调用睡觉方法,调用奔跑方法类的多态7.42多态案例1多态含义3多态优势多态通常的含义是指事物能够呈现出多种不同的形式或形态。在编程术语中,它的意思是一个变量可以引用不同的对象,并且能自动地调用被引用对象的方法,响应不同的操作,从而呈现出不同的形态。继承和方法重写是实现多态的技术基础。方法重写:当从父类继承过来的方法不能满足子类的需求时,子类中对父类同名方法进行重写。1多态含义7.4类的多态Dog:defwork():print(“看家护院”)UntrainedDog:defwork():print(“看家护院”)DrugDog:defwork():print(“搜寻毒品”)ArmyDog:defwork():print(“追击敌人”)Person:defwork_with_dog():print(“?”)7.4类的多态2多态实例Dog:defwork():print(“看家护院”)ArmyDog:defwork():print(“追击敌人”)7.4类的多态2多态实例7.4类的多态2多态实例灵活性可替换性可扩充性接口性简化性7.4类的多态3多态优势运算符重载7.57.5运算符的重载有时希
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年中国三元乙丙黑色彩色橡胶颗粒市场现状数据分析及前景预测报告
- 2026及未来5年中国PVC软胶磁性冰箱贴市场现状数据分析及前景预测报告
- 2026年兵团第三师事业单位招聘笔试试题及答案
- 尿路感染小讲课
- 2026年川大艺术概论模拟试题(含答案)
- 瑶医治疗痹病用药规律
- 中国丁苯橡胶(SBR)行业市场占有率及投资前景预测分析报告
- 2026年处方诊断三基模拟试题(含答案)
- 2026-2030年中国羊肉深加工行业市场运行格局及发展前景研判报告
- 2026年理想招聘考试模拟题目及答案详解
- 高三数学一轮复习《数列求和》教学设计
- 2026年基层党支部书记考试题及答案
- 2026秋统编版九年级上册道德与法治全册背诵提纲
- 护理专业-大学生职业生涯规划
- 尾矿库突发环境事件专项应急预案
- 燃气锅炉操作培训课件
- 疖痈课件教学课件
- 某市红十字会应急救护培训的实践与对策建议(调研报告)
- 无人机智能巡检工作总结
- 呼吸科进修汇报护理
- 短视频招聘效能研究-洞察及研究
评论
0/150
提交评论