我想创建一个对象的副本,其中包含另一个对象的超类。在此示例中,我想复制包含Box
的Toy
。但是所有玩具都可以放在盒子里。在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/