2013-08-19 4 views
5

Каков наилучший способ создать дочерний элемент, заданный родителем с данными? Было бы хорошо, чтобы иметь метод со всеми родителями значения на дочернем классе, как:Лучший способ создать дочерний объект из его родителя

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

extends Person() {Никаких скобок не требуется. – initramfs

+0

Почему ваш «ребенок» должен быть передан «Родитель»? –

+0

@tieTYT может быть, может быть, человек хочет точного ребенка-клона, включая все его преимущества и плохие привычки = \ –

ответ

9

Я бы рекомендовал создать конструктор родительского класса, который принимает объект типа Parent.

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

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

+1 Это умно! –

+9

Создание объекта 'Person' из объекта' Person' кажется несколько бессмысленным. – christopher

+0

В этом весь вопрос, который я предполагаю. –

0

Гораздо проще это

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

Ваш объект ребенок всегда имеет доступ к полям своего родителя, учитывая соответствующие модификаторы доступа на месте.