面向对象的Java实现封装2
更新时间:2023-07-26 08:56:01 阅读量: 实用文档 文档下载
- java面向对象的封装性推荐度:
- 相关推荐
面向对象的Java实现封装
第二章面向对象的Java实现 继承和多态 实现-继承和多态 面向对象的 实现
面向对象的Java实现封装
回顾
在Java程序中,代码封装带给我们的好处是什么? 程序中,代码封装带给我们的好处是什么? 程序中 举例说明什么是方法重载? 举例说明什么是方法重载? Java中的构造方法与实例方法,有什么区别? 中的构造方法与实例方法,有什么区别? 中的构造方法与实例方法
面向对象的Java实现封装
预习检查
举例说明在什么样的情况下,需要使用到继承? 举例说明在什么样的情况下,需要使用到继承? 程序中, 在Java程序中,多态性带给我们的好处是什么? 程序中 多态性带给我们的好处是什么?
面向对象的Java实现封装
本章任务
升级HelloACCP,输出ACCP5.0教员的基本信息: ,输出 教员的基本信息: 升级 教员的基本信息 使用继承提高代码的复用性 使用多态提高代码的可扩展性及可维护性
面向对象的Java实现封装
本章目标
掌握继承 掌握super关键字 掌握 关键字 掌握多态
面向对象的Java实现封装
生活中的继承 2-1生活中, 生活中,继承的例子随处可见动物 谁是父类? 谁是父类? 谁是子类? 谁是子类? 能说出继承的特点吗? 能说出继承的特点吗?
食草动物
食肉动物
继承需要符合的关系: 继承需要符合的关系:is-a,父类更通用,子类更具体 ,父类更通用,6
面向对象的Java实现封装
生活中的继承 2-2子类具有父类的一般特性(包括属性和行为),以及自身 子类具有父类的一般特性(包括属性和行为),以及自身 ), 特殊的特性巴士是汽车吗? 巴士是汽车吗? 卡车是汽车吗? 卡车是汽车吗? 出租车是汽车吗? 出租车是汽车吗? 汽车 引擎数量 外观颜色 刹车 加速 属性 行为
请问: 请问:出租车 包含哪些属性 和行为呢? 和行为呢? 最大载客数量 报站 最大载重量 卸货 所属公司 最大载客数量 打发票7
面向对象的Java实现封装
为什么需要继承 4-1
开发ACCP教员类,其中教员分为Java教员以及 教员类,其中教员分为 教员以及.NET教 开发 教员类 教员以及 教 各自的要求如下: 员,各自的要求如下:Java教员 教员属性:姓名, 属性:姓名,所属中心 方法:授课(步骤:打开Eclipse,实施理论课授课),自我介绍 ),自我介绍 方法:授课(步骤:打开 ,实施理论课授课),
.NET教员 教员属性:姓名, 属性:姓名,所属中心 方法:授课(步骤:打开Visual studio 2005,实施理论课授课), 方法:授课(步骤:打开 ,实施理论课授课), 自我介绍
面向对象的Java实现封装
为什么需要继承 4-2请问:以下这个解决方案中存在着什么问题? 请问:以下这个解决方案中存在着什么问题?public class AccpDotNetTeacher { private String name; // 教员姓名 public class AccpJavaTeacher { private String name; // 教员姓名 private String school; // 所在中心 private String school; // 所在中心 public AccpDotNetTeacher(String public AccpJavaTeacher(String myName, myName, String mySchool) { String mySchool) { name = myName; name = my
Name; school = mySchool; school = mySchool; } } public void giveLession(){ System.out.println("启动 Visual public void giveLession(){ 启动 System.out.println("启动 Eclipse"); 启动 Studio 2005"); System.out.println("知识点讲解 知识点讲解"); 知识点讲解 System.out.println("知识点讲解 知识点讲解"); 知识点讲解 System.out.println("总结提问 总结提问"); 总结提问 System.out.println("总结提问 总结提问"); 总结提问 } } public void introduction() { public void introduction() { System.out.println("大家好!我是 大家好! 大家好 我是" System.out.println("大家好!我是 大家好! 大家好 我是" + school + "的" + name + "."); 的 + school + "的" + name + "."); 的 } } 9 代码存在重复,违背了" 代码存在重复,违背了} write once, only once"的原则 " 的原则 }
面向对象的Java实现封装
为什么需要继承 4-3如何改进?有没有可能建立继承关系, 如何改进?有没有可能建立继承关系,让子类自动继承父 类的属性和方法? 类的属性和方法?Java教员是教员吗? 教员是教员吗? 教员是教员吗 .NET教员是教员吗? 教员是教员吗? 教员是教员吗 教员 姓名 所在中心 授课 自我介绍 public class AccpTeacher { private String name; // 教员姓名 private String school; // 所在中心 public AccpTeacher(String myName, 属 String mySchool) { 性 name = myName; 行 school = mySchool; 为 } public void giveLesson(){ System.out.println("知识点讲解 知识点讲解"); 知识点讲解 System.out.println("总结提问 总结提问"); 总结提问 } public void introduction() { System.out.println("大家好!我是 大家好! 大家好 " + school + "的" + name + "."); 的 . 现在, 现在,所有子类中相同的代 } 10 码都抽取到父类中了 }
Java教员 教员
.NET教员 教员
面向对象的Java实现封装
为什么需要继承 4-4public class AccpJavaTeacher2 extends AccpTeacher { public AccpJavaTeacher2(String myName, String mySchool) { super(myName, mySchool); 子类自动继承父类的属 } 性和方法, 性和方法,子类中不再 public void giveLesson(){ 存在重复代码 System.out.println("启动 Eclipse"); 启动 super.giveLesson(); } } public class AccpDotNetTeacher2 extends AccpTeacher { public AccpDotNetTeacher2(String myName, String mySchool) { super(myName, mySchool); } public void giveLesson(){ System.out.println("启动 Visual Studio .NET"); 启动 super.giveLesson(); } } 使用继承, 使用继承,可以有效实现代码复用
面向对象的Java实现封装
如何实现继承 3-1语言中, 在Java语言中,用extends关键字来表示一个类继承了另 语言中 关键字来表示一个类继承了另 一个类,例如: 一个类,例如:public class AccpJavaTeacher2 extends AccpTeacher { //其余代码省略 其余代码省略 }
在父类中只定义一些通用的属性与方法,例如: 在父类中只定义一些通用的属性与方法,例如:public class AccpTeacher { private String name; // 教员姓名 private String school; // 所在中心 publi
c AccpTeacher(String myName, String mySchool) { //初始化属性值 初始化属性值 } public void giveLesson() { //授课方法的具体实现 } 授课方法的具体实现 public void introduction() { //自我介绍方法的具体实现 } 自我介绍方法的具体实现 }12
面向对象的Java实现封装
如何实现继承 3-2子类自动继承父类的属性和方法, 子类自动继承父类的属性和方法,子类中可以定义特定 的属性和方法public class AccpTeacher { private String name; // 教员姓名 public class AccpJavaTeacher2 extends private String school;// 所在中心 AccpTeacher { public AccpTeacher (String public AccpJavaTeacher2(String myName, String mySchool) { myName, String mySchool) { //初始化属性值 初始化属性值 super(myName, mySchool); } } public void giveLesson() { public void giveLesson(){ //授课方法的具体实现 授课方法的具体实现 System.out.println("启动 启动Eclipse"); 启动 } super.giveLesson(); public void introduction() { } //自我介绍方法的具体实现 自我介绍方法的具体实现 } 由于giveLesson()方法与 由于 方法与 } 父类的实现有所不同, 父类的实现有所不同,因 } 父类中的属性和方法可 此重写了该方法 以被子类继承 方法重写:子类和父类的方法具有相同的名称,参数列表, 方法重写:子类和父类的方法具有相同的名称,参数列表,返回类型13
面向对象的Java实现封装
如何实现继承 3-3子类的构造方法中,通过 子类的构造方法中,通过super关键字调用父类的构造方法 关键字调用父类的构造方法public class AccpJavaTeacher2 extends AccpTeacher { public AccpJavaTeacher2(String myName, String mySchool) { super(myName, mySchool); } 通过调用父类的构造方法, 通过调用父类的构造方法, } 完成对属性值的初始化
方法重写后,通过 方法重写后,通过super关键字调用父类的方法 关键字调用父类的方法public class AccpJavaTeacher2 extends AccpTeacher { public void giveLesson(){ System.out.println("启动 Eclipse"); 启动 super.giveLesson(); } }14
面向对象的Java实现封装
一切类的"祖先" 一切类的"祖先"——Object所有的Java类都直接或间接地继承了 在Java 中,所有的 类都直接或间接地继承了 ng.Object类 类public class MyObject { //… } public class MyObect extends Object { //… }
中调用MyObject 在Eclipse中调用 中调用 对象的成员, 对象的成员,会自动弹出继 承自Object的所有方法 承自 的所有方法
面向对象的Java实现封装
小结 1
请编码实现动物世界的继承关系: 请编码实现动物世界的继承关系:动物( ),睡觉 动物(Animal)具有行为:吃(eat),睡觉(sleep) )具有行为: ),睡觉( ) 动物包括:兔子( ),老虎 动物包括:兔子(Rabbit),老虎(Tiger) ),老虎( ) 这些动物吃的行为各不相同(兔子吃草,老虎吃肉); );但睡觉 这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉 的行为是一致的. 的行为是一致的.
请通过继承实现以上需
求,并编写测试类 请通过继承实现以上需求,并编写测试类AnimalTest 进行测试. 进行测试.
完整代码实现16
面向对象的Java实现封装
为什么需要多态 5-1
教员类的基础上, 在ACCP教员类的基础上,开发一个类代表总部,负责 教员类的基础上 开发一个类代表总部, 对各教员进行评估,评估内容包括: 对各教员进行评估,评估内容包括:1,教员的自我介绍 , 2,教员的授课 ,
面向对象的Java实现封装
为什么需要多态 5-2第一种解决方案
public class HQ1 { public void judge(AccpJavaTeacher2 t){ t.introduction(); 大家好!我是天津中心的张明. 大家好!我是天津中心的张明 t.giveLesson(); 启动 Visual Studio 2005 } public void judge(AccpDotNetTeacher2 t){ 知识点讲解 总结提问 t.introduction(); t.giveLesson(); } public static void main(String[] args) { 控制台输出 HQ1 hq = new HQ1(); hq.judge(new AccpJavaTeacher2("李明 北京中心")); 李明","北京中心 李明 北京中心" hq.judge(new AccpDotNetTeacher2("张明 天津中心")); 张明","天津中心 张明 天津中心" } }18
大家好!我是北京中心的李明 大家好!我是北京中心的李明. 启动 Eclipse 知识点讲解 总结提问
面向对象的Java实现封装
为什么需要多态 5-3
现在,升级 教员类, 现在,升级ACCP教员类,增加一种新类型: 教员类 增加一种新类型: AccpDBTeacher,该类型的教员专门负责教授数据库, ,该类型的教员专门负责教授数据库, 要求如下: 要求如下:属性:姓名, 属性:姓名,所属中心 方法:授课(启动Sql Server,实施理论课授课),自我介绍 ),自我介绍 方法:授课(启动 ,实施理论课授课),
同时, 同时,总部也负责对这类教员进行评估
正在阅读:
面向对象的Java实现封装207-26
上海市第三次新长征突击手表彰大会04-15
学校军训主题活动总结2022年04-03
管理学基础案例分析02-20
FAI全尺寸报告(自动判定格式)05-12
深宝建招20092号11-25
2018高考物理直线运动试题汇编及解析01-21
统计工作人员工作总结11-21
化工升职发言稿例文(精选多篇)08-22
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 封装
- 面向
- 对象
- 实现
- Java
- 医疗卫生体制改革 最新
- 《人机工程学》第1章 绪论
- 校园利众小型商品交易会策划书
- 最新上半江南大学中国现代文学第3阶段测试题
- 太乙第一中心小学“义务教育均衡发展”迎检方案
- 《教育社会学AB模拟练习题参考答案
- 2021年肌萎缩侧索硬化下运动神经元损伤临床评估方法进展(全文)
- 中国人民解放军队列条令(1997)
- 湖南大学2016年研究生入学考试物理化学试题
- 2010年江苏高考政治试题及答案
- 私营企业老板入党申请书
- 四年级下册劳动与技术教案
- 基于单片机的自行车里程表及速度仪的毕业设计
- 生产管理与质量工程
- 中国农业银行2013校园招聘求职大礼包
- 农村综合产权交易推进措施
- 自治区幼儿园教育指导纲要
- 中国大型客车行业供需趋势及投资风险研究报告2016-2020年
- 4施工单位用表汇总该2(总表)报审表
- 15例舒血宁注射液不良反应/事件分析