动物乐园
任务描述:
-
- 以面向对象思想设计动物乐园系统
-
-
- 动物乐园包括的成员:猫、鸭子,海豚,……
-
- 属性:名称、腿
- 方法:叫
-
- 设计类图
-
-
- 使用多态、接口优化设计
-
-
- 以面向对象思想设计动物乐园系统
-
- 编码实现
分别创建Cat、Duck、Dolphin对象并放到一个数组中,对数组进行遍历输出各种动物如何叫,各种动物腿的条数。instanceof判断动物种类 。
package day10;
//腿
interface Terrestrial{
int getLegNum();
}
abstract class Animal1 {
private String name;
public Animal1(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract void shout();
}
class Cat1 extends Animal1 implements Terrestrial{
private int legNum;//腿的数量
public Cat1(String name,int legNum) {
super(name);
this.legNum = legNum;
}
public void shout() {
System.out.println("喵喵");
}
public int getLegNum() {
return legNum;
}
}
class Duck extends Animal1 implements Terrestrial{
private int legNum;//腿的数量
public Duck(String name,int legNum) {
super(name);
this.legNum = legNum;
}
public void shout() {
System.out.println("嘎嘎");
}
public int getLegNum() {
return legNum;
}
}
class Dolphin extends Animal1{
public Dolphin(String name) {
super(name);
}
public void shout() {
System.out.println("海豚音");
}
}
public class TestAnimal {
public static void main(String[] args) {
Animal1 [] animals = new Animal1[3];
Cat1 cat = new Cat1("加菲", 4);
Duck duck = new Duck("唐小鸭", 2);
Dolphin dolphin = new Dolphin("奇奇");
animals[0] = cat;
animals[1] = duck;
animals[2] = dolphin;
for(Animal1 a : animals) {
if(a instanceof Terrestrial) {
System.out.print(a.getName() + "\t");
Terrestrial t = (Terrestrial)a;
System.out.print(t.getLegNum() + "\t");
a.shout();
}else {
System.out.print(a.getName() + "\t");
System.out.print("0 \t");
a.shout();
}
}
}
}