我想创建一个对象的副本,其中包含另一个对象的父类(super class)。在这个例子中,我想制作一个包含 Toy
的 Box
的副本。但是所有类型的玩具都可以放在盒子里。在 Toy
中创建复制构造函数的最佳方法是什么?
class Box {
Toy toy;
public Box(Toy toy) {
this.toy = toy;
}
public Box(Box box) {
this.toy = new Toy(box.getToy());
}
}
abstract class Toy {
public Toy(String name) {
// ...
}
}
class Car extends Toy {
public Car(String name) {
super(name);
// ...
}
}
class Puppet extends Toy {
public Puppet(String name) {
super(name);
// ...
}
}
我真的不知道如何解决这个问题。
最佳答案
使Toy
有一个抽象方法copy()
,返回类型为Toy
。然后你将被迫在 Car
和 Puppet
中覆盖它。在 Box
的复制构造函数中,您可以使用 box.getToy().copy()
。
关于java - 复制包含另一个对象的父类(super class)的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27640961/