java封装与构造方法.ppt

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

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!