为了多态,我有一个方法将抽象类作为参数。 但是在方法内部我想要返回实际对象的副本。
实施例:
//Animal is an abstract class
public Animal findAndClone(Animal[] zoo){
for (Animal a:zoo)
//find some animal...
return new Animal(a) //cant instantiate an abstract class
}
我尝试使用如上所示的复制构造函数,但它无法实例化抽象。
我想在基类中定义clone()
,但我在基类中遇到了同样的问题。
怎么做对了?
谢谢。
答案 0 :(得分:1)
除非您想依赖dodgy Object.clone
method,否则最好在copy
中创建一个抽象的Animal
方法,并确保所有子类都正确地覆盖它。
abstract class Animal {
...
// Needs to be implemented by subclasses. A Dog returns a Dog, etc...
public abstract Animal copy();
...
}
然后而不是做
return new Animal(a);
你做了
return a.copy();