版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第5讲讲 面向对象程序设计基本概念面向对象程序设计基本概念1. 对象对象2. 类类3. 封装封装4. 继承继承5. 多态多态6. 多重继承多重继承7. 接口接口8. 包包对象(对象(object)n我们可以把生活所在的真实世界(我们可以把生活所在的真实世界(Real World)当作是由许多大小不同的对象所组成的。当作是由许多大小不同的对象所组成的。n对象可以是有生命的个体。对象可以是有生命的个体。对象对象 n对象也可以是无生命的个体。n对象也可以是一件抽象的概念。对象的特征对象的特征 n对象有两个特征:状态(state)和行为(behavior)。例如:一个人有他的身高或体重作状态,并有他
2、的行为如唱歌、打球、骑摩托车、开汽车。一只狗有它的颜色作状态,也有它的行为,如吠叫或跳跃。n而在程序设计中,软件对象的概念由真实世界对象而来。面向对象程序设计中,软件对象将状态保存在变量(variables)或称数据字段(data field)里,而行为则借助方法(methods)来实现 。data field 1data field nmethod 1method n数据字段(状态)方法(行为)软件对象的定义软件对象的定义 data field 1data field nmethod 1method n变量(数据字段)方法定义:对象是由变量(数据字段)及相关方法所组成的软件包(softwar
3、e bundle) 汽车对象汽车对象 n以汽车为例,我们可定义其状态与方法如下: 换档开大灯刹车开冷气颜色排档数排气量轮胎型号OOP三大特性:封装、继承与多态三大特性:封装、继承与多态封装封装data field 1data field nmethod 1method n变量(数据字段)方法封装封装n封装用来将对其他对象不是重要的实行细节隐藏起来。nOOP将数据成员(Data Member)和属于此数据的操作方法(operating method),都放在同一个实体(entity)或称对象(object)中,这就是所谓的封装。 封装封装 n封装的用意,是避免数据成员被不正当的存取,以达到信息隐
4、藏(information hiding)的效果,避免错误的存取发生。封装的好处:n1.模块化(modularity):一个对象的原始文件可以独立地被撰写及维护而不影响其他对象。而且对象可以轻易地在系统中来回地传递使用。n2.信息隐藏(information hiding):一个对象可以和其他的对象之间进行沟通,但该对象仍然维持私有的信息及方法,这些信息及方法可以在任何时间被修改,而不影响那些依赖于该对象的其他对象。 消息消息 (message) n软件对象是通过传送消息给其他对象来达到交互及沟通的目的。如下图所示: data field 1data field nmethod nmethod
5、 1对象A对象B消息消息消息 (message)n 一个消息是由3个元素所组成: 1.消息目标对象(你的汽车)。 2.执行方法的名字(换档)。 3.执行方法所需用的参数(低、高速档)。 如:g.drawString(“ 你好Java!”,50,50);类类 (class)n在真实世界里,有许多同“种类”的对象。而这些同“种类”的对象可被归类为一个“类”。动物类汽车类实例实例 (instance)n你的汽车只是这世界中许多汽车中的一个。我们就称你的汽车对象是汽车类中的一个实例(instance)。 汽车类class实例instancenew你的车软件对象蓝图软件对象蓝图类类 (class)n在面
6、向对象软件设计里,也可以利用此原理来制造一些软件对象蓝图。这些软件对象蓝图就称作类(class)。 定义:一个类就是一个蓝图或原型,定义了定义:一个类就是一个蓝图或原型,定义了通用于一特定种类的所有对象之变量及方法。通用于一特定种类的所有对象之变量及方法。 软件对象蓝图软件对象蓝图类类 (class)换档开大灯刹车开冷气颜色排档数排气量轮胎型号data field 1data field nmethod 1method n私用数据细节公用方法对象(实例)的产生对象(实例)的产生new关键字关键字 n类就好比一个蓝图。那实例(instance)就是从一种类里所产生具有此类的状态(变量)与行为(方
7、法)的真实对象。在面向对象程序设计里是用“new”这个关键字来产生实例。类实例1实例2实例3newnewnew蓝图真实对象例:JOptionPane jop;jop=new JOptionPane();类变量类变量&类方法类方法 n所谓的类变量(静态变量)、类方法(静态方法),指的是用“static”修饰的变量、方法。其地位与类等同。在内存中只有一个地方存放。当系统在程序中第一次遇到一个类时,便会拷贝一份所有的类变量在内存里。然后那些属于此类的实例便分享这些类变量。因此,你可以直接利用类来存取类变量和类方法,而不用将类实例化后才取用。实例变量实例变量&实例方法实例方法 n当你从一种类产生一个实
8、例时,就等于制造了一个对象。而实例产生后,便拥有与类“同类型”但内存地址不同的变量(除了类变量外),称之为实例变量(instance variables)。n每个实例各自拥有自己的变量,而系统就会为这些实例变量个别配置内存。n但实例方法却仍留在类里,并不会再复制到实例中。但你仍可以调用这些方法来令实例对象做些事。实例方法指的是那些并没有用static修饰符的methods。继承继承 (inheritance) nOOP便是以类来定义一个对象的。当我们要使用一个对象(的变量或方法)时,首先要想到它是属于哪一种类的。不仅对象是以类来定义,更进一步地,类也可以用其他类来定义,现以下图来说明:汽车类轿
9、车巴士出租车继承继承 (inheritance)n这样在父类中只定义一些通用的状态与实现部分的行为,到了子类中才实现细节,我们称此父类为抽象类(abstract class)。n在抽象类中只定义一些状态,和实现少部分行为。这样其他的程序设计师就可依照他们所要的特定子类进行实现与定义。类层级类层级(class hierarchy) n类继承关系可不仅只是一层关系而已,它可以有好几层。这种树状关系,我们可称作类层级(class hierarchy)。至于层级数可依照实际需要而定 。 Root Class继承的产生继承的产生extends 关键字关键字 n例如: public class Hello
10、World extends Appletn继承的好处: 1.重复利用父类程序代码。这样在撰写子类时,只要针对其所需的特别状态与行为来写即可。提高程序撰写的效率。 2.先写出定义好却尚未实现的抽象父类,可使得在设计子类时,简化设计过程,只要将定义好的方法填满即可。this与与super关键字关键字 nthis与super分别指着有继承关系的子、父类。nthis出现在程序代码中,指的是所在的该类对象。super指的是所继承的父类对象。nthis与super 均不用先声明即可自行使用。方法覆盖方法覆盖 (method overriding) n覆盖的意思是不用考虑父类的方法是如何写的,只要重新定义改
11、写,就可“盖”过去。method xxxmethod xxx父类子类多态多态 (polymorphism) n在同一个类中可有许多同名的方法,但其参数数量与类型不同,而且运作过程与回传值也可能会不同,这就是我们所谓的多态。构造函数构造函数 (constructors) n构造函数是一种特别的类方法,其命名与类同名,但不具有回传值。可接受多种类型、数量的传入参数,然后做不同的运算。n构造函数通常用于初始值设置。例如java.lang包中的String类里,有多种的构造函数: String() String(byte bytes) String(byte ascii, int hibyte) St
12、ring(byte bytes, int offset, int length) String(byte ascii, int hibyte, int offset, int count) String(byte bytes, int offset, int length, String enc) String(byte bytes, String enc) String(char value) String(char value, int offset, int count) String(String value) String(StringBuffer buffer)方法重载方法重载(m
13、ethod overloading)n所谓的方法重载,是指调用一个类中具有同名异式方法,但在执行时期(run-time)才根据其参数数量与类型来判断要调用此方法的哪一种operation。例:nAccount.javanCheckingAccount.javaJava OOP的其他重要特性多重继承多重继承(multi-inheritance) n一个对象可以隶属于数种不同的类。这种多元性的继承关系就叫做多重继承 。 父亲类丈夫类主管类营业车类小客车类汽油车类注意:Java不支持多重继承接口 (interface )nInterface 这个英文字的意思是一种装置或系统,使得不同性质的实体(entities)能够交互地运作。n而在Java里,设计接口的用意,是可使得类不必受限于单一继承的关系,而可灵活地同时继承一些共有的特性,达到多重继承的目的,而免去C+中多重继承的复杂关系所产生的问题 。汽车类自用车营业车小车大车汽油车柴油车轿车出租车巴士父类接口子类接口的实现接口的实现implements关键字关键字 n使用implements关键字,可使类能同时实现多种接口。n例如: public class JApplet_1 extends Applet implements AppletContext,AudioClip; 包包(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无线通信设备装调工安全文明水平考核试卷含答案
- 普通车工岗位工艺分析考核试卷含答案
- 2025年盘山县数学三下期末联考试题(含答案)
- 数码冲印师岗位理论评估考核试卷含答案
- 石英晶体滤波器制造工岗前协同配合考核试卷含答案
- 紧固件制造工保密意识评优考核试卷含答案
- 2025年甘肃省甘南藏族自治州玛曲县数学四下期末联考试题(含答案)
- 2025年甘肃省平凉市泾川县数学四下期中监测模拟试题(含答案解析)
- 2025年灵武市数学三年级下学期期末教学质量检测模拟试题(含答案解析)
- 一造重要试题及详细答案解析
- 低血容量性休克总结2026
- 某项目机电安装全过程管理要点总结
- 2025绍兴上虞区事业单位编外招聘22人(公共基础知识)综合能力测试题附答案解析
- 全国园林绿化养护概算定额(2018版)
- 2025年福建省工勤技能考试(行政事务人员技师)经典试题及答案
- 早产儿肠内营养管理
- 产品变更通知单模板PCN(4P)
- 分泌物廓清技术课件
- 2025至2030年中国视力训练仪行业市场现状分析及未来前景分析报告
- 2025年浙江嘉兴中新嘉善现代产业园开发有限公司招聘笔试参考题库含答案解析
- 德邦车管理制度
评论
0/150
提交评论