请老师帮忙看一下代码,是否有需要改进的地方。
public class Test3 { public static void main(String[] args) { // 生成父类对象数组,数组长度为5 Animal[] animals = new Animal[5]; // 产生随机数,随机产生三种具体子类的实例 Animal animal = null; for (int i = 0; i < animals.length; i++) { int temp = (int) (Math.random() * 3); switch (temp) { case 0: animal = new Cat(); break; case 1: animal = new Dog(); break; case 2: animal = new Sheep(); break; } animals[i] = animal; } // 循环输出,循环体中每个对象分别调用cry()方法。 for (int j = 0; j < animals.length; j++) { animals[j].cry(); } } }
public class Animal { //属性:kind(种类) private String kind; public Animal() { } //创建带参(king为参数)构造函数 public Animal(String kind) { } //应用封装实现对私有属性的get/set操作 public void setKind(String kind) { this.kind = kind; } public String getKind() { return kind; } //创建成员方法cry():void public void cry(){ } }
public class Cat extends Animal { //重写父类cry()方法,输出信息为“小猫的叫声:喵喵喵~~~” @Override public void cry(){ System.out.println("小猫的叫声:喵喵喵~~~"); } }
public class Dog extends Animal { //重写父类cry()方法:输出信息为“小狗的叫声:汪汪汪~~~” @Override public void cry(){ System.out.println("小狗的叫声:汪汪汪~~~"); } }
public class Sheep extends Animal { //重写父类的方法cry(),要求输出信息“小羊的叫声:咩咩咩~~~” @Override public void cry(){ System.out.println("小羊的叫声:咩咩咩~~~"); } }
请老师看一下,是否有需要改进的代码?
还有就是,我打断点调试的时候,在随机数生成的那一步,在expression那里监控temp变量以及等号右边的表达式的值,该句代码执行前后,随机数都会产生变化,这是为什么?为什么不是只有执行了这句之后,等号右边的随机值才回产生变化,然后再赋给左边的temp?
0
收起
正在回答
1回答
1、同学完成的不错,继续加油
2、没有明白同学说的问题:同学说的是这个吗?同学可以截图举例说明一下么?
祝学习愉快
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星