从父对象创建子对象的最佳方法

11

如何在已有父级数据的情况下创建子级,哪种方法最好?是否可以在子类中添加一个带有所有父级值的方法:

public class Child extends Person {
  public Child(Parent p) {
    this.setParentField1(p.getParentField1());
    this.setParentField2(p.getParentField2());
    this.setParentField3(p.getParentField3());
    // other parent fields.
  }
}

如何将父对象的数据复制到子对象中?

Child child = new Child(p);

1
扩展自 Person() {}。无需括号。 - initramfs
为什么创建Child时需要传递一个Parent - Daniel Kaplan
@tieTYT 或许,只是或许,这个人想要一个完全一样的孩子克隆体,包括他所有的好处和坏习惯 =\ - Luiggi Mendoza
1
是的,子类是父类,但它有一些额外的字段。 - Molly
2个回答

18

我建议在父类中创建一个构造函数,该构造函数接受一个类型为Parent的对象。

public class Child extends Parent {
  public Child(Parent p) {
     super(p);
  }
}

public class Parent {
   public Parent(Parent p){
      //set fields here
   }
}

12
从一个 Person 对象创建另一个 Person 对象似乎有些毫无意义。 - christopher
1
这大概就是问题的核心所在。 - Biscuit Coder

0

更简单的是

       public class Child extends Parent {
             public Child(Parent p) {
             //Set fields with parent
           }
       }

只要适当的访问修饰符已经设置好,你的子对象总是可以访问其父对象的字段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接