Java实现-封装.ppt_第1页
Java实现-封装.ppt_第2页
Java实现-封装.ppt_第3页
Java实现-封装.ppt_第4页
Java实现-封装.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象的Java实现 封装 第一章 2 课程地位 3 就业技能结构图 4 课程目标 学完本门课程后 你能够熟练使用OO思想编写Java程序深刻理解并运用继承和接口深刻理解并运用异常处理程序错误 5 相关课程回顾 publicclassTest publicstaticvoidmain String args for inti 0 i 10 i System out println i System out println i 10 请举例说明类与对象的区别与联系 超出了变量i的访问范围 请指出下列Java代码中存在的错误 并改正 6 预习检查 举例说明什么是方法重载 Java中的构造方法与实例方法 有什么区别 7 本章任务 升级HelloACCP 输出ACCP5 0教员的自我介绍 对属性进行封装用构造方法实现对象成员的初始化对构造方法进行重载 8 理解封装的概念掌握private关键字掌握构造方法掌握方法重载 本章目标 9 为什么需要封装2 1 编写一个类 代表ACCP5 0教员 要求 具有属性 姓名 年龄具有行为 自我介绍ACCP5 0教员的最小年龄要求 22岁 publicclassAccpTeacher1 publicStringname 教员姓名publicintage 年龄 返回自我介绍的内容 publicStringintroduction return 大家好 我是 name 我今年 age 岁 10 为什么需要封装2 2 编写一个测试类 要求 实例化一个教员对象 并对其初始化在控制台输出该教员的自我介绍 publicclassAccpTeacher1Test publicstaticvoidmain String args AccpTeacher1teacher newAccpTeacher1 teacher name 李芳 teacher age 10 System out println teacher introduction 要满足教员的最小年龄要求 可以通过对属性的封装来实现 11 什么是封装 publicclassAccpTeacher2 privateStringname 教员姓名 返回教员姓名publicStringgetName returnname 设定教员姓名publicvoidsetName Stringname this name name 封装 就是隐藏实现细节将属性私有化 提供公有方法访问私有属性通过这些公有方法访问私有属性 AccpTeacher2teacher newAccpTeacher2 teacher setName 李芳 StringtName teacher getName 通过setter getter方法访问name属性 this代表当前类的实例 12 如何实现封装2 1 封装的实现 1 修改属性的可见性来限制对属性的访问2 为每个属性创建一对赋值 setter 方法和取值 getter 方法 用于对这些属性的访问3 在setter和getter方法中 加入对属性的存取限制 publicclassAccpTeacher3 privateStringname 教员姓名privateintage 年龄publicintgetAge returnage publicvoidsetAge intage if age 22 System out println 错误 最小年龄应为22岁 this age 22 如果不符合年龄要求 则赋予默认值 else this age age 此处省略对name属性的setter getter方法 1 2 3 13 如何实现封装2 2 publicclassAccpTeacher3Test publicstaticvoidmain String args AccpTeacher3teacher newAccpTeacher3 teacher setName 李芳 teacher setAge 10 System out println teacher introduction 使用封装 增加了数据访问限制 增强了程序的可维护性 错误 最小年龄应为22岁 大家好 我是李芳 我今年22岁 测试类通过调用setter方法 为对象的各个属性赋值 14 小结1 使用private关键字修饰某个成员变量后 这个成员变量可以被同一包中的其它类访问吗 在Java程序中 代码封装带给我们的好处是什么 15 小结2 请通过代码封装 实现如下需求 编写一个类Book 代表教材 具有属性 名称 title 页数 pageNum 其中页数不能少于200页 否则输出错误信息 并赋予默认值200为各属性设置赋值和取值方法具有方法 detail 用来在控制台输出每本教材的名称和页数编写测试类BookTest进行测试 为Book对象的属性赋予初始值 并调用Book对象的detail方法 看看输出是否正确 完整代码实现 16 为什么需要构造方法2 1 开发ACCP5 0教员类AccpTeacher4 要求 具有属性 姓名 年龄 学历 职位具有行为 自我介绍 publicclassAccpTeacher4 privateStringname 姓名privateintage 年龄privateStringeducation 学历privateStringposition 职位publicStringintroduction return 大家好 我是 name 我今年 age 岁 学历 education 目前职位是 position publicStringgetName returnname publicvoidsetName StringmyName name myName 以下是其他属性的setter getter方法 此处省略 17 为什么需要构造方法2 2 编写一个测试类 要求 实例化一个教员对象 并对其初始化在控制台输出该教员的自我介绍 publicclassAccpTeacher4Test publicstaticvoidmain String args AccpTeacher4teacher newAccpTeacher4 teacher setName 李芳 teacher setAge 23 teacher setEducation 本科 System out println teacher introduction 要简化对象初始化的代码 可以通过构造方法来解决 大家好 我是李芳 我今年23岁 学历本科 目前职位是null AccpTeacher4中有太多的属性及对应的setter方法 在初始化时 很容易就忘记了 有没有可能简化对象初始化的代码 18 什么是构造方法 构造方法负责对象成员的初始化工作 为实例变量赋予合适的初始值构造方法必须满足以下语法规则 1 方法名与类名相同2 没有返回类型 publicclassAccpTeacher5 privateStringname 教员姓名 构造方法publicAccpTeacher5 name 无名氏 publicclassAccpTeacher5Test publicstaticvoidmain String args AccpTeacher5teacher newAccpTeacher5 使用new关键字调用构造方法 19 带参数的构造方法2 1 通过带参数的构造方法 显式地为实例变量赋予初始值 publicclassAccpTeacher6 privateStringname 教员姓名privateintage 年龄privateStringeducation 学历privateStringposition 职位 带参数的构造方法publicAccpTeacher6 StringpName intpAge StringpEducation StringpPosition name pName age pAge 可以增加对age等属性的存取限制条件education pEducation position pPosition publicStringintroduction return 大家好 我是 name 我今年 age 岁 学历 education 目前职位是 position 20 带参数的构造方法2 2 通过调用带参数的构造方法 简化对象初始化的代码 publicclassAccpTeacher6Test publicstaticvoidmain String args AccpTeacher6teacher newAccpTeacher6 李芳 23 本科 咨询师 System out println teacher introduction 创建对象时 一并完成了对象成员的初始化工作 大家好 我是李芳 我今年23岁 学历本科 目前职位是咨询师 21 小结3 编写一个类Book2 代表教材 具有属性 名称 title 页数 pageNum 其中页数不能少于200页 否则输出错误信息 并赋予默认值200具有方法 Sdetail 用来在控制台输出每本教材的名称和页数具有带参数的构造方法 用来完成对象的初始化工作 并在构造方法中完成对页数的最小值限制编写测试类Book2Test进行测试 初始化一个Book2对象 并调用该Book2对象的detail方法 看看输出是否正确 完整代码实现 22 生活中的方法重载 类 方法 方法参数 方法实现 司机 轿车 巴士 火车 驾驶 启动 行驶 等待乘客上车 启动 行驶 到站停车 正点发车 行驶 到站停车 如果用代码实现 我们需要三个方法 这些方法的方法名称相同 参数类型不同 23 方法重载的代码示例1 方法重载并不陌生java io PrintStream类的println方法能够打印数据并换行 根据数据类型的不同 有多种实现方式 publicclassTest publicstaticvoidmain String args inti 0 charc z Stringstr hello System out println i System out println c System out println str PrintStream println int println char println String 方法名相同 参数类型不同 调用不同的println方法 方法重载 24 方法重载的代码示例2 java lang Math类的max 方法能够从两个数字中取出最大值 它有多种实现方式运行时 Java虚拟机先判断给定参数的类型 然后决定到底执行哪个max 方法 publicclassTest publicstaticvoidmain String args Math max 1 2 Math max 1 0F 2 0F Math max 1 0 2 方法重载 25 构造方法重载2 1 构造方法重载是方法重载的典型示例 publicclassAccpTeacher7 privateStringname 教员姓名privateStringschool 北京中心 所在中心publicAccpTeacher7 Stringname this name name 设定教员姓名 publicAccpTeacher7 Stringname Stringschool this name name 设定教员姓名this school school 设定教员的所在中心 publicStringintroduction return 大家好 我是 school 的 name 构造方法重载 26 构造方法重载2 2 通过调用不同的构造方法来表达对象的多种初始化行为例如 默认情况下 教师来自北京中心 初始化时 只需提供教员姓名有时 需要提供所在中心名称及教员姓名 publicclassAccpTeacher7Test publicstaticvoidmain String args AccpTeacher7teacher1 newAccpTeacher7 李芳 System out println teacher1 introduction AccpTeacher7teacher2 newAccpTeacher7 张欣 天津中心 System out println teacher2 introduction 大家好 我是北京中心的李芳大家好 我是天津中心的张欣 27 小结4 编写一个类Book3 代表教材 具有属性 名称 title 页数 pageNum 类型 type 具有方法 detail 用来在控制台输出每本教材的名称 页数 类型具有两个带参构造方法 第一个构造方法中 设置教材类型为 计算机 固定 其余属性的值由参数给定 第二个构造方法中 所有属性的值都由参数给定编写测试类Book3Test进行测试 分别以两种方式完成对两个Book3对象的初始化工作 并分别调用它们的detail方法 看看输出是否正确 完整代码实现 28 给定如下Java代码 请指出代码中的错误 并解释原因 publicclassSample privateintx publicSample

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论