动物乐园

这个项目主要是检验你对面向对象的三大特性的学习情况

需求:以面向对象思想设计动物乐园系统。动物乐园中有猫、鸭等成员, 还可能增加新成员。猫和鸭都有自己的名字,都有腿,但腿的条数不同,猫和鸭子会发出 叫声,猫的叫声是“喵喵喵……”,鸭的叫声是“嘎嘎嘎……”。

分析:有五个类,一个接口,五个类分别是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();
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值