对于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 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星