我有一个名为 Foo 的类,该类存储一个通用变量。我还有另一个名为 Set 的类。Set 是一组 Foo 对象,因此,Set 也是一个泛型类。每个类都有很多属性和实现的方法,这些方法可以处理任何类型。
class Foo<T>{
private T var;
public void show(){ (...) }
(...)
}
class Set<T>{
private Foo<T>[] things;
public void showAllElements(){ (...) }
public int quantityOfElements(){ (...) }
(...)
}
这样我就可以制作一组整数、字符串、双精度数和任何类型。
但是我有一个抽象类,我也想将它用作 Foo 和 Set 类的模板,我们称它为 Animal 类。
abstract class Animal{
private String voice;
public void talk(){ (...) }
}
我想做一组动物,像这样:
class FooAnimal<T extends Animal>{
private T var;
public void show(){ (...) }
public void talk(){
var.talk();
}
}
class SetOfAnimals<T extends Animal>{
private FooAnimal<T>[] things;
public void showAllElements(){ (...) }
public int quantityOfElements(){ (...) }
public void makeAllTheAnimalsTalk(){
for(int i=0; i<things.lenght(); i++)
things[i].talk();
}
}
我怎样才能做到这一点,而不必将我为 Foo 和 Set 制作的代码复制并粘贴到 SetOfAnimals 和 FooAnimal 类中?
有一个UML图的链接来解释这个问题:
http://i.imgur.com/r3yE37Y.png?1
我怎样才能做到这一点?你推荐我什么讲座来解决这个问题?
我不得不编辑问题,以便更容易理解......对此感到抱歉。