JAVA多态编写一个车类_【JavaOOP】Java OOP -- 1.面向对象的Java实现 继承和多态

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

现在,需要升级ACCP教员类,增加一种新类型:ACCPDBTeacher,该类型的教员专门负责教授数据库,

具有属性“姓名”、“所属中心”;具有方法“授课”(授课步骤依次是:打开SQL Server、知识点

讲解、总结提问)以及“自我介绍”。同时,总部也负责对这类教员进行评估。

【例4】

****************************************

HQ2类

****************************************

01 package s2Java.sg.ch02;

02 public class HQ2 {

03   /*

04    * 对Java教员进行评估,评估内容:自我介绍、授课

05    */

06   public void judge(AccpJavaTeacher2 teacher) {

07     teacher.introduction();

08     teacher.giveLesson();

09   }

10

11   /*

12    * 对.Net教员进行评估,评估内容:自我介绍、授课

13    */

14   public void judge(AccpDotNetTeacher2 teacher) {

15     teacher.introduction();

16     teacher.giveLesson();

17   }

18

19   /*

20    * 对数据库教员进行评估,评估内容:自我介绍、授课

21    */

22   public void judge(AccpDBTeacher teacher) {

23     teacher.introduction();

24     teacher.giveLesson();

25   }

26

27   /*

28    * 使用main方法进行单元测试

29    */

30   public static void main(String[] args) {

31     HQ2 hq = new HQ2();

32     AccpJavaTeacher2 jt = new AccpJavaTeacher2("李明","北京中心");

33     hq.judge(jt);

34     System.out.println();

35     AccpDotNetTeacher2 nt = new AccpDotNetTeacher2("张明","天津中心");

36     hq.judge(nt);

37     System.out.println();

38     AccpDBTeacher dt = new AccpDBTeacher("李岚","北京中心");

39     hq.judge(dt);

40   }

41 }

运行结果:

大家好!我是北京中心的李明。

启动 Eclipse

知识点讲解

总结提问

大家好!我是天津中心的张明。

启动 Eclipse

知识点讲解

总结提问

大家好!我是北京中心的李岚。

启动Sql Server

知识点讲解

总结提问

【分析】

从输出结果看,这样做行得通,但是存在一定的弊端。每增加一种新的教员类型,都要修改HQ2类,

增加相应的judge()方法。代码的可维护性和可拓展新极差!

下面这样编码就很好,使用的多态,代码变得很简洁,并且可拓展性和可维护性增强了。

【例5】

****************************************

HQ3类

****************************************

01 package s2Java.sg.ch02;

02 public class HQ3 {

03   /*

04    * 对教员进行评估,评估内容:自我介绍、授课

05    */

06   public void judge(AccpTeacher teacher) {

07     teacher.introduction();

08     teacher.giveLesson();

09   }

10

11   /*

12    * 使用main方法进行单元测试

13    */

14   public static void main(String[] args) {

15     HQ3 hq = new HQ3();

16     hq.judge(new AccpJavaTeacher2("李明","北京中心"));

17     System.out.println();

18     hq.judge(new AccpDotNetTeacher2("张明","天津中心"));

19     System.out.println();

20     hq.judge(new AccpDBTeacher("李岚","北京中心"));

21   }

22 }

运行结果:

大家好!我是北京中心的李明。

启动 Eclipse

知识点讲解

总结提问

大家好!我是天津中心的张明。

启动 Eclipse

知识点讲解

总结提问

大家好!我是北京中心的李岚。

启动Sql Server

知识点讲解

总结提问

【分析】

代码第6行,传父类的对象。

代码16、18、20行,同一个实现接口,使用不同的实例而执行不同的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值