多态的使用

多态的使用

假设我们不知道有ArrayList这种类而想要自行编写维护的类以保存Dog对象,此时我们可以采用数组的方式来实现。在这个例子中我们只会写出add()方法。我们使用大小为5的简单Dog数组(Dog[])来保存新加入的Dog对象。当Dog对象超过5个时,你还是可以调用add()方法,但是什么事情也不会发生。如果没有越界,add()会把Dog装到可用的数组位置中,然后递增可用索引。 

自己创建的Dog专用list

public class MyDogList {
    private Dog[] dogs = new Dog[5];
    private int nextIndex = 0; 

    public void add(Dog d) {
        if (nextIndex < dogs.length) {
            dogs[nextIndex] = d;
            System.out.println ("Dog added at "+ nextIndex);
            nextIndex++;
        }
    }
}

如果也要写出Cat用的List,那要是写两个List不是太麻烦了吗?所以编写不同的AnimalList类让它处理Animal所有的子类。那你就可以直接调用这个List的add方法了。


abstract class Animal {
    String name;
    abstract public void eat();
}


class Dog extends Animal {
    public void eat() {
        System.out.println("狗吃骨头");
    }
}


class Cat extends Animal {
    public void eat() {
        System.out.println("猫吃鱼");
    }
}


class MyAnimalList {
    private Animal[] animals = new Animal[5];
    private int nextIndex = 0;
    
    public void add(Animal a) {
        if (nextIndex < animals.length) { 
            animals[nextIndex] = a;
            System.out.println("Animal addad at " + nextIndex);
            nextIndex++;
        }
    }
}


public class AnimalTestDrive {
    public static void main(String[] args) {
        //在这里写代码


        MyAnimalList list =new MyAnimalList();
        Dog a=new Dog();
        Cat c=new Cat();
        list.add(a);
        list.add(c);


    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值