是否有使用Base Class对象构造Derived Class对象的快捷方式

时间:2014-01-23 19:21:17

标签: java oop

我有一个包含所有必填字段的Base Class对象。在一个字段的基础上,我需要返回相应的派生对象,其中包含来自基础对象的所有信息。

我有一个基类,字段为1,字段2.现在我想要一种方法来传回一个包含所有基类信息的派生对象。

我不认为我可以把它投射到Derived Object。我可以通过将Base类对象传递给构造函数然后将单个元素复制到新对象来实现。

有快捷方式吗?

1 个答案:

答案 0 :(得分:3)

没有。您将需要复制所有字段(您可以使用Reflection自动执行此操作,但我建议您自己编写代码)。或者,您可以取消继承并使用组合,这可能是也可能不是您的案例中可接受的解决方案。

你可以做的是实现一个复制构造函数:

class Base {
  public Base() { } // Existing constructors

  public Base(Base other) {
    this.a = other.a;
    this.b = other.b;
    // ...
  }
}

并从派生类构造函数中调用它:

class Derived : Base {
  public Derived(Base template) { 
    super(template);

    // Initialize specific fields
  }
}