




已阅读5页,还剩82页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ahlen s Java中的面向对象 面向对象编程的基础 面向对象方法吸取了程序设计语言和数据建模技术等有益的成果 经过30多年的发展 终于形成自己的模型 为人们提供了更强的问题求见能力 面向对象技术是要用更接近于人类思维方式的方法来处理实际问题 面向对象的程序设计只是面向对象方法学的一个组成部分OOP Objects Classes Inheritance 发展简述 最早的面向对象软件 1966 SimulaI比较成熟有效的OO工具 1980Smalltalk 80更加完善的面向对象语言 LISP ObjectPascal C Java 十足面向对象 抽象的进步 所有编程语言的最终目的都是提供一种 抽象 方法为要解决的问题制作模型利用一些工具表达问题空间内的元素与现实世界的 对象 或者 物体 相比 编程 对象 与它们也存在共通的地方 它们都有自己的特征和行为 对象object 具有状态和行为的软件模块 数据加代码 或数据与代码的组合两个特征 状态和行为 数据和方法例如 mybike的状态 speed是10kmph 步度是90rpm自行车的行为 刹车 启动和换挡行为用方法来实现 提取是人类本性的一部分 封装Encapsulation 在程序设计中 封装指的是将一个数据和与这个数据有关的操作集合放在一起 形成一个能动的实体 对象 从外间只能看到对象的外特性 即能够接受哪些消息 具有哪些处理能力 而看不到对象的内特性 更通俗一点讲 封装就是把数据隐藏在对象中使除了该对象以外的任何东西都不能使用这些数据 可以把对象当成一个独立的黑匣子来处理 封装的状态 方法1 方法2 方法3 方法4 其它方法 对象之间的通讯 消息 消息定义 它是对象间互相请求或协作的途径 是要求某个对象执行其中某个功能操作的规格说明对象之间的联系 只能通过传递消息来进行对象也只有在收到消息时 才被激活 从而完成所要求的功能一个消息由三部分组成 1 接受消息的对象2 要完成方法的名字3 方法需要的参数 消息的性质 同一对象可接受不同形式的多个消息 产生不同的响应相同形式的消息可以送给不同对象 所作出的响应可截然不同消息的发送可以不考虑具体的接受者 对象可以响应消息 也可以不响应 消息表达式 除了具备提供动态约束的选择机制外 消息表达式类似于普通的函数调用 两者都有变量 并返回值 调用时其环境都被压入栈内保护起来 在执行时 调用者被挂起 在调用完后在恢复其运行环境 对象名 消息名 参数1 或消息名 对象名 参数1 以电灯泡为例 Lightlt newLight lt on 类型 类的名称是Light可向Light对象发出的请求包括打开 on 关闭 off 变得更明亮 brighten 或者变得更暗淡 dim 对象名是lt 消息名on 继承性 classTimePiece inttime publicvoidSetTime intNewTime time newTime publicvoicShowTime System out println time 继承性 类的层次结构层次结构的一个重要特性 继承性一个类直接继承其父类的全部描述 数据和方法 有传递性软件重用 类的层次结构图 类 子类3 子类2 子类1 基类2 基类1 继承性举例 TimePiece superclass variabletimemethodSetTime DisplayTime TimeAlarmPiece subclass 继承变量time继承方法SetTime DisplayTime 创建变量alarm alarmAudioClip创建方法 SetAlarm SoundAlarm classTimeAlarmPieceextendsTimePiece intalarm alarmAudioClip publicvoidSetAlarm pubilcvoicSoundAlarm 继承性补充 在java中一个父类可以有多个子类一个子类只能有一个父类 单一继承使用关键字extends标示继承关系 多态性 指的是在类等级的各层中共享一个行为的名字 然而类等级中各类却各自按自己的需要来实现这个行为 简言之 不同的对象收到相同的消息时产生不同的动作 比如对于刹车这个动作 自行车类和汽车类会表现出不同的反应 类class 对象的抽象 类是设计图 是创建的对象的源代码模板类包含所有的描述状态和行为的编程代码 类是由类型和模块的概念相结合产生的 理论上 类是ADT 抽象数据类型 的实现 具有ADT的优点 不是通过实现 而是通过数据结构和数据结构上的一种服务 即方法 以及这些服务的形式化特征来描述数据结构类的 这样类就可以将该类对象的属性和方法的描述和实现分离开 为类的封装提供了方便 对象 类和实体 对象是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现类是具有一定共性的所有对象的抽象属于类的某一个对象则被称为是类的一个实例图示如下 对象 类和实体 对象 类 实体 抽象数据类 计算机世界 现实世界 概念世界 映射 计算机的逻辑实现 抽象 抽象 实例化 类的格式 classclass name instancevariables methoddeclarations classPoint privateinth privateintv publicvoidsetPoint intnewH intnewV h newH v newV publicintgetH return h publicintgetV return V 实例化new 使用一个对象之前必须实例化该对象PointmyPt newPoint myPt setPoint 145 124 inttheHorizontal myPr getH inttheVertical myPt getV 另一个简单的例子 汽车类 Car classclassCar 汽车类 intcar number voidset number intcar num car number car num voidshow number System out println 我的车牌号是 car number 使用类 classCarDemo publicstaticvoidmain Stringargs 产生一个Car对象 DemoCarCarDemoCar newCar 设置DemoCar的车号为3838DemoCar Set number 3838 调用DemoTrashCar的方法show number DemoCar show number 继承于汽车类的垃圾车类 classTrashCarextendsCar 垃圾车类 intcapacity voidset capacity inttrash car capacity capacity trash car capacity voidshow capacity System out println 垃圾车的容量是 capacity 类说明 类的修饰符 class类名称 缺省的变量声明 方法声明 公有的变量或方法public变量声明 方法声明 私有的变量或方法private变量声明 方法声明 受保护的变量或方法protected变量声明 方法声明 类的修饰符 访问控制符 只有public或缺省如果类说明中加上了public 那么其他的类都可以使用该类 一个文件中最多只能有一个类是public非访问控制符在后面讲 对象的引用 引用对象中的变量对象名 变量名rec x 60 调用对象的方法对象名 方法名 参数表 或对象名 方法名 对象的引用 Rectangle类提供了两个等效的方式 把矩形对象移动到一个新的位置调用move intx inty 方法rec move 60 50 直接给x y赋值rec x 60 rec y 50 Java中的引用 在Java中 引用 是指向一个对象在内存中的位置 在本质上是一种带有很强的完整性和安全性的限制的指针 当你声明某个类 接口或数组类型的一个变量时 那个变量的值总是某个对象的引用或者是null引用 指针就是简单的地址而已 引用除了表示地址而外 还象被引用的数据对象的缩影 还提供其他信息 指针可以有 运算 引用不可以运算 成员变量 定义的一般格式 Modifier typevariablelist intx y z inta 1 b 2 c 3 Modifier 是定义变量的修饰符说明变量的访问权限和某些使用规则public peotected private final static 成员变量的访问权限 public公有变量private私有变量protected保护变量privateprotected私有保护变量friendly隐含式修饰符 public公有变量 访问权限 允许任何包中的任何类的变量访问classAlpha publicinti public classbeta voidaccessmethod Alphaa newAlpha a i public 10 私有变量private 只能被定义它的类的变量访问classAlpha privateinti private voidaccessmethod Alphaa newAlpha a i private 10 比如 classAlpha privateinti private classbeta voidaccessmethod Alphaa newAlpha a i private 10 Error 保护变量protected 允许类自身 子类以及它在同一个包中的所有类的变量访问classAlpha protectedinti protected classbeta voidaccessmethod Alphaa newAlpha a i protected 10 privateprotected私有保护变量 允许类自身以及它的子类变量访问在类中访问私有保护变量classAlpha privateprotectedinti priv prot voidaccessmethod Alphaa newAlpha a i priv prot 10 privateprotected私有保护变量 在子类中访问私有保护成员变量classAlpha privateprotectedinti priv prot classBetaextendsAlpha voidaccessmethod Alphaa newAlpha a i priv prot 30 friendly友好变量 如果一个变量没有显式地设置为访问权限 即为友好变量允许类自身以及在同一个包中的所有类的变量访问classAlpha inti friendly voidaccessmethod Alphaa newAlpha a i friendly 10 方法的定义 typename parameter list 方法体 方法的访问权限 说明格式和访问机制与成员变量完全一致例Demo java 构造方法 constructor 构造函数 在一个类中和类同名的方法叫构造函数 系统在产生对象时会自动执行 构造函数多半定义一些初值或内存配置工作构造方法必须在new运算符中引用在同一个类中 允许定义多个 同名 构造方法 以参数的个数来区分一个类中如果没有包含构造方法的说明 将提供隐含的构造方法无返回类型甚至没有void 不能继承超类 例 将类Car中的set number 改用构造方法来实现Car intcar num car number car num 构造方法的访问权限 publicprivateprotectedprivateprotected this 代表当前的对象在构造方法中用this调用一般方法 引用成员变量 thisDemo java在方法中用this调用另外一个方法 Excercise 编写点类Point 用点类构成矩形类Rectangle 实现求矩形类周长和面积的方法 初步掌握JAVA中类的构成和使用 P507 成员变量和方法的非访问修饰符 static静态的final最终的abstract抽象的 修饰方法和类 静态变量和方法 用static说明的变量和方法静态变量与其它成员变量的区别 其他成员变量必须通过类的对象来访问 每个对象都有这些变量的备份 静态变量独立于该类中的任何对象 他在类的实例只有一个备份 可以直接使用 不必通过类的对象访问它属于定义他的类 类所有对象都共享staticstatic方法区别与之类似 静态变量的定义和应用 classMyDemo1 staticintx 80 staticinty 120 classMyStaticDemo1 publicstaticvoidmain Stringargs System out print X MyDemo1 x y MyDemo1 y final变量和方法 用final说明的变量当作一个常量使用 不得对其进行修改final变量用大写字母来表示 这是习惯约定final方法说明与之类似 不能被重载 用对象作为参数 给定两个值 按大小顺序输出OutMaxDemo java 把对象作为返回值 ReturnObject java 方法的重载 多态性 可以在同一个类中有多个同名的方法 只要他们的参数列表不同 类型和数目 例给定两个或三个数 将他们由大到小按顺序输出BigToSmall java 方法的覆盖 在子类中重新定义父类中已有的方法 classCar intcolor number intdoor number intspeed push break speed 0 add oil classTrash CarextendsCar doubleamount fill trash push break speed speed 10 类的继承 被继承类成为超类继承类称为子类extends关键字子类名extends超类名 继承超类的方法和变量 SortDemo java隐藏实例变量和类变量SumDemo java 访问权限 子类不能继承超类中的私有变量和方法只能继承如下变量和方法 超类中被定义为公有的 私有保护的或保护的成员变量和方法可被子类访问同一个包中的超类的友好变量和方法可被子类访问 super方法 super parameter list 调用超类的构造方法 将超类中的变量初始化super 总是用于子类的构造方法中 而且必须是子类构造器的第一条语句publicclassappleextendsfruits publicapple intprice super price static方法 静态方法或类方法方法的约束 仅可以调用其他static方法仅可以访问static变量不能参考this或super静态方法称为类的方法 因此不用实例化即可调用 面向过程 类名 成员名 static方法 例 不正确的引用classStaticError Stringmystring hello publicstaticvoidmain Stringargs System out println mystring 错误信息 can tmakeastaticreferencetononstaticvariable 类的修饰符 非访问控制符 abstract抽象类当一个类中 如果出现了某一个abstract方法 那么这个类之前也必须加上abstract修饰字 对一组对象共同点的抽象不能直接使用 必须使用派生出的子类final最终类final类不能再有子类通常是一些有固定作用 用来完成某种标准功能的类Java中加入这一点主要是为了安全上的原因 避免已经写好的类被别人继承后修改 注意 abstract与final不能同时修饰同一个类 抽象方法 只有方法的形式 方法体是空的方法的细节由子类实现格式为abstract类型方法名 parameter list 整个抽象类的格式 abstract类型类名 成员变量1 构造方法 abstract类型方法名 parameter list 类型方法名 parameter list 注意 抽象方法不能直接用new操作符实例化一个对象 抽象方法只能是实例方法 不包括构造方法和类 静态 方法例 例子 java lang Number publicabstractclassNumberimplementsjava io Serializable publicabstractintintValue publicabstractlonglongValue publicabstractfloatfloatValue 所有方法都是抽象的它有具体子类Integer Long Float等 例子 java lang Integer publicfinalclassIntegerextendsNumberimplementsComparable publicstaticfinalintMIN VALUE 0 x80000000 privateintvalue publicintintValue returnvalue publiclonglongValue return long value 例子 java io InputStream publicabstractclassInputStream 含有很多方法 只有read 是抽象的其它方法都要用到read FilterInputerStream DataInputStream等的基础 它们都按各自的方式实现read 从而也就能用InputStream的其它方法 Java包 包 相当于其它语言中的库函数一种用来分隔类名的空间机制打包 包的层次结构 通过使用句点 把每个包分开packagepkg1 pkg2 pkg3 packagejava awt image packageGraphics classSquare classCircle classTriangle import语句 使用程序包中的类要用import命令 表示路径 表示使用包中的所有类importjava io FileInputStream importjava io import并不将包实际读入 仅指示编译器到指定的包中去寻找类 方法 在源文件中 import位于package语句与这个文件的类或接口之间 import语句 Eg importjava awt image importjava lang 引入一个大包时 星号可能会增加编译时间 但对运行时间和生成的类文件大小没有丝毫影响 import语句 所有的java标准类都存放在Java包中基本类存放在java lang包中 已被编译器隐式引入也可不用import语句 classMyDateextendsjava util Date 与importjava util classMyDateextendsDate 作用相同 访问控制 包是其他包和类的容器类是数据和代码的容器被定义为private的任何成员只能在同一类中被访问当一个成员没有指定修饰符 仅允许在同包类中被访问当一个成员允许在当前包之外直接子类访问 定义为protected 只允许子类访问privateprotected 接口的定义 accessinterfacename return typemethod name paremeter list typefinal varname value access访问修饰符 public和 default 常量隐式为final和static若接口为public 所有方法和变量都为public 接口的定义 Eg interfaceCallback voidC back intparam intSOON 4 接口的定义 Eg packagejava io publicinterfaceSerializable 接口的定义 利用接口可实现多重继承 可同时实现多个接口 体现对象不同侧面的性质 接口的作用和抽象类类似 指定原型 不直接定义方法的内容 从形式上像一种特殊的抽象类 所有方法都public abst
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《诗经》二首《蒹葭》课件
- 恋迹社区工作总结
- 亲子互动情感小课件
- 村血防工作汇报
- 亲仁弟子规课件
- 事考帮课件知乎
- 公司级安全培训授课方式课件
- 护理学生个人介绍
- 公司码头安全培训内容课件
- 机场登机口业务培训
- DB53∕T 1269-2024 改性磷石膏用于矿山废弃地生态修复回填技术规范
- 2024-2025学年北京市西城区三年级数学第一学期期末学业水平测试试题含解析
- 北师大版小学数学四年级上册第3单元 乘法《有多少名观众》公开教学课件
- 2024年版教育培训机构加盟合同范本
- DL∕T 976-2017 带电作业工具、装置和设备预防性试验规程
- 新突破大学英语综合教程1全套教学课件
- 历年中华人民共和国宪法知识竞赛试题真题【含答案】
- 光伏电站的运维项目方案
- CJJ-T134-2019建筑垃圾处理技术标准
- 广东省智慧高速公路建设指南(2023年版)
- 认定露天煤矿重大隐患 培训课件2024
评论
0/150
提交评论