Создать дочерний класс из созданного базового класса?

#java #inheritance

#java #наследование

Вопрос:

Я знаю, это звучит странно, но возможно ли создать дочерний класс, который наследуется от уже созданного базового класса? Я знаю, что могу использовать DI, но мне просто интересно.

Редактировать: я знаю, что это скорее особенность языков, основанных на прототипах, таких как javascript. В любом случае, мне интересно, стоит ли это вообще рассматривать, возможно ли что-то подобное.

Предположим, у меня есть следующее:

 public class Parent {
  protected id;

  public Base(int id) {
    this.id = id;
  }
}

public class Child extends Parent {
  public void getID() {
    return id;
  }
}
  

Итак, в моем основном я бы сделал что-то вроде этого:

 Parent x = new Parent(1900);
// How to make a child of this particular base?
// x child = new Child();
  

Ответ №1:

Как создать дочерний класс для этой конкретной базы?

Вы не можете. Самое близкое, что вы можете сделать, Parent — это реализовать конструктор копирования и Child использовать его в конструкторе, что позволит вам создать a Child , который скопировал бы состояние этого конкретного родителя…

… что на самом деле не так уж и близко. Как вы говорите, то, что вы ищете, — это прототипное наследование, которого у Java просто нет.

Комментарии:

1. Итак, лучшее, что я могу сделать, это внедрение зависимостей?

2. @Asperger: Ну, я не сразу понимаю, как DI помогает вам создавать дочерний класс для конкретной созданной базы. Если Child включена оболочка Parent , я вижу, как DI поможет, но… (Раскрытие информации: весьма вероятно, что вы знаете о DI больше, чем я. Приближается к определенности. 🙂 )

3. На самом деле все, о чем я думал, было похоже на систему, в которой я передаю родительский элемент в новый дочерний элемент. Таким образом, каждый раз, когда создается новый дочерний класс, он имеет доступ к объекту, который я передал. О, мальчик, это было бы некрасиво… множество геттеров для полей, если я не сделаю их общедоступными.