我想创建一个对象的副本,其中包含另一个对象的超类。在此示例中,我想复制包含BoxToy。但是所有玩具都可以放在盒子里。在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。然后,您将被迫在CarPuppet中覆盖它。在Box的副本构造函数中,可以使用box.getToy().copy()

关于java - 复制包含另一个对象的父类(super class)的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27640961/

10-10 06:09