面向对象的Java实现封装2

发布时间:2021-06-05

面向对象的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实现封装2.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219