泛型中,怎么实现多态?
请教高手了?
[此贴子已经被作者于2007-8-22 16:48:51编辑过]
[此贴子已经被作者于2007-8-22 16:48:51编辑过]
这样写的好处就是你的代码只与基类T打交道,具体的细节交给多态机制。比如你现在有个动物类,也就是T类,你从T类继承了好多类,比如狗,小猫,小兔子,等等,你在你的代码里只保存动物类,就可以把小猫,小兔子这些放进去,而后你可以覆盖动物类里的方法,这样你从容器里取出什么都当作动物来对待,调用统一的接口方法。
[此贴子已经被作者于2007-8-22 16:48:00编辑过]
这样写的好处就是你的代码只与基类T打交道,具体的细节交给多态机制。比如你现在有个动物类,也就是T类,你从T类继承了好多类,比如狗,小猫,小兔子,等等,你在你的代码里只保存动物类,就可以把小猫,小兔子这些放进去,而后你可以覆盖动物类里的方法,这样你从容器里取出什么都当作动物来对待,调用统一的接口方法。
import java.util.*;
abstract class Animal {
public abstract void eat();
}
class Dog extends Animal{
public void eat(){
System.out.println("dog eat");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("cat eat");
}
}
class Zoo<T extends Animal>{
List<T> lists = new ArrayList<T>();
public void addAnimal(T a){
lists.add(a);
}
public void eat(){
Iterator<T> iterator = lists.iterator();
for(;iterator.hasNext(); ){
iterator.next().eat();
}
}
}
public class Client {
public static void main(String [] args){
Zoo<Animal> z = new Zoo<Animal>();
z.addAnimal(new Cat());
z.addAnimal(new Dog());
z.eat();
}
}