Java 如何克隆声明为它的对象';什么是抽象超类?
我有一个方法,它获取一个抽象类作为参数,用于多态性。 但是在这个方法中,我想返回一个实际对象的副本 例如: 我尝试使用如上所示的复制构造函数,但它无法实例化抽象。 我曾想过在基类中定义一个Java 如何克隆声明为它的对象';什么是抽象超类?,java,clone,instantiation,copy-constructor,Java,Clone,Instantiation,Copy Constructor,我有一个方法,它获取一个抽象类作为参数,用于多态性。 但是在这个方法中,我想返回一个实际对象的副本 例如: 我尝试使用如上所示的复制构造函数,但它无法实例化抽象。 我曾想过在基类中定义一个clone(),但在基类中遇到了同样的问题。 如何做到这一点 谢谢。除非您想依赖,否则最好在Animal中创建一个抽象的copy方法,并确保所有子类都正确覆盖它 abstract class Animal { ... // Needs to be implemented by subclass
clone()
,但在基类中遇到了同样的问题。
如何做到这一点
谢谢。除非您想依赖,否则最好在
Animal
中创建一个抽象的copy
方法,并确保所有子类都正确覆盖它
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();
所有子类都可以复制与基类中定义的所有属性相同的属性,区别在于某些方法的定义不同,因此没有必要在每个子类中编写一个对所有方法都相同的copy\clone方法。谢谢,我明白了。不幸的是,这对你没有帮助。你还是得听从我的建议。你可以做的是在
Animal
中创建一个helper方法,上面写着copyAnimalMembers
等等,它完成了这项工作,你可以在Dog.copy
,Cat.copy
中调用它。这样可以避免在所有子类中复制粘贴代码。
return a.copy();