对于7-2作业题老师的点评不是很理解,请老师解答一下
public class Test { // 声明对象依次进行实例化操作 // 这里使用的是向上转型 IAct bear = new BrownBear("Bill", 1); IAct lion = new Lion("Lain", 2, "公狮", "灰色"); IAct monkey = new Monkey("Tom", 1, "金丝猴"); IAct parrot = new Parrot("Rose", 1, "牡丹鹦鹉"); IAct clown = new Clown("Kahle", 5); // 菜单的方法 public void menu() { System.out.println("********欢迎来到太阳马戏团********"); System.out.println("********** 请选择表演者 **********"); System.out.println("********** 1、棕熊 **********"); System.out.println("********** 2、狮子 **********"); System.out.println("********** 3、猴子 **********"); System.out.println("********** 4、鹦鹉 **********"); System.out.println("********** 5、小丑 **********"); } // 选择是否继续观看方法 public void watch() { boolean flag = true; while (flag) { System.out.println("***** 是否继续观看(0/1) *****"); Scanner sc = new Scanner(System.in); int a = sc.nextInt(); switch (a) { case 0: System.out.println("******** 欢迎下次光临 ********"); break; case 1: performer(); break; default: System.out.println("***输入的信息不正确,请重新输入***"); continue; } flag = false; } } // 选择表演者的方法 public void performer() { boolean flag = true; while (flag) { menu(); Scanner sc = new Scanner(System.in); int b = sc.nextInt(); switch (b) { case 1: System.out.println(bear.act()); break; case 2: System.out.println(lion.act()); break; case 3: System.out.println(monkey.act()); break; case 4: System.out.println(parrot.act()); break; case 5: System.out.println(clown.act()); break; default: System.out.println("***输入的信息不正确,请重新输入***\n"); continue; } flag = false; watch(); } } public static void main(String[] args) { Test test = new Test(); test.performer(); } }
讲师点评:程序可以运行,但作业中要求是要用多态来实现 ,如果用多态来实现performer() 中,就需要在外面事先定义IACT iAct;。例如case 1:iAct = new Bear("Bill", 1);break; case 2:iAct = new Lion("Lail", 2, "灰色", "公狮");出switch后再iAct.act();。
我的问题:我不是很理解老师说的这个意思,麻烦老师详细解答一下,我的程序哪里出现问题,或者不完善的地方。谢谢老师!
20
收起
正在回答
1回答
你的作业可以运行,但是与作业的要求不一致。你是事先定义好了5个动物
IAct bear = new BrownBear("Bill", 1); IAct lion = new Lion("Lain", 2, "公狮", "灰色"); IAct monkey = new Monkey("Tom", 1, "金丝猴"); IAct parrot = new Parrot("Rose", 1, "牡丹鹦鹉"); IAct clown = new Clown("Kahle", 5);
但项目中多态的应用,更多的是老师点评的那样使用。定义一个对象,就一个对象,例如叫iAct。此对象可能是BrownBear,也可能是Lion等,但它们有一个共同的接口,act( ),这样的好处是扩展性较强,例如日后又多了一个动物Dog,你可以思考一下,老师建议的方案跟你自己写的对比一下,哪一个方案的修改量是最少的?你可能说也就差一行代码的事儿。确实是这样,功能简单所以差的少,但在大的项目中功能复杂,可能会涉及多处.java文件。一旦修改的地方多了,就容易出现bug,不好维护。
Android零基础入门2018版
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星