这个项目主要是检验你对面向对象的三大特性的学习情况 需求:以面向对象思想设计动物乐园系统。动物乐园中有猫、鸭等成员, 还可能增加新成员。猫和鸭都有自己的名字,都有腿,但腿的条数不同,猫和鸭子会发出 叫声,猫的叫声是“喵喵喵……”,鸭的叫声是“嘎嘎嘎……”。 分析:有五个类,一个接口,五个类分别是Cat类、Duck类、Animal类、Test类和新增的成员Dolphin类,接口为Terrestrial Cat类的属性有:int类型的legNum,Duck类的属性有:int类型的legNum,抽象类Animal的属性有:String类型的name Cat类和Duck类的方法有:返回值类型为void的getLegNum()方法,Cat(String name,int legNum)的构造方法,返回值类型为void的shout()方法 Animal类的方法有:Animal(String name)的构造方法,返回值类型为void的shout()的抽象方法 Dolphin类的方法有:Dolphin(String name)的构造方法,返回值类型为void的shout()方法 接口Terrestrial的方法有:返回值为int类型的getLegNum()方法 代码的实现: abstract class Animal { private String name; //构造方法,初始化名字 Animal(String name){ this.name = name; } //getter方法,获得名字 String getName(){ return name; } //抽象方法,子类重写此方法 abstract void shout(); } interface Terrestrial { //接口中的方法,扩展此功能的类需重写此方法 int getLegNum(); } class Cat extends Animal implements Terrestrial { int legNum; //构造方法,初始化名字和腿的数量 Cat(String name,int legNum){ //调用父类的构造方法 super(name); this.legNum = legNum; } //重写父类的shout方法 public void shout(){ System.out.println("喵喵。。。"); } //重写接口中的方法 public int getLegNum(){ return legNum; } } class Cat extends Animal implements Terrestrial { int legNum; Cat(String name,int legNum){ super(name); this.legNum = legNum; } public void shout(){ System.out.println("喵喵。。。"); } public int getLegNum(){ return legNum; } } class Dolphin extends Animal { Dolphin(String name){ super(name); } public void shout(){ System.out.println("海豚音。。。"); } } class Test { public static void main(String[] args) { System.out.println("动物名字 腿的条数 动物叫"); //创建一个Animal类型的数组用来存储动物名字和腿的数量 Animal[] animals = new Animal[3]; //向数组中存储数据 animals[0] = new Cat("加菲猫 ",4); animals[1] = new Duck("唐小鸭 ",2); animals[2] = new Dolphin("海豚奇奇"); //遍历数组 for (int i = 0;i < animals.length ;i++ ) { //判断动物是否实现了接口 if (animals[i] instanceof Terrestrial) { Terrestrial trtl = (Terrestrial)animals[i]; int legNum = trtl.getLegNum(); //如果实现了接口则输出动物名字和对应的腿的数量 System.out.print(animals[i].getName() + " " + legNum); }else{ //如果没实现就输出动物的名字和腿数为0 System.out.print(animals[i].getName() + " 0"); } System.out.print(" "); //输出动物的叫声 animals[i].shout(); } } }