#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. На самом деле все, о чем я думал, было похоже на систему, в которой я передаю родительский элемент в новый дочерний элемент. Таким образом, каждый раз, когда создается новый дочерний класс, он имеет доступ к объекту, который я передал. О, мальчик, это было бы некрасиво… множество геттеров для полей, если я не сделаю их общедоступными.