Я хочу предоставить всем классам реализации метод по умолчанию, который инициализирует родительские поля со значениями по умолчанию. Так что я не должен переопределить эти инициализации в пределах каждого класса Impl:Как вернуть объект из родительского класса с типом класса Impl?
public abstract class Parent {
private String name;
public static Parent defaultParent() {
Parent parent = new Parent();
//fill default field values
parent.name = "default name";
return parent;
}
}
public class Child extends Parent {
}
Теперь я могу назвать Child.defaultParent()
. Но это вернет мне объект типа Parent
. Возможно ли, чтобы этот способ был неявным объектом объекта Child
? Итак, метод defaultParent
всегда возвращает тип класса реализации?
Возможно, с java 8, функциональными интерфейсами или подобным?
но ... почему вы не используете конструктор? –
Поскольку конструктор всегда будет инициализировать поля. Обычно я не хочу, чтобы они были инициализированы, только в некоторых случаях, когда я вызываю 'defaultParent()'. – membersound
Но таким образом вы инициализируете отдельный объект. Если вы хотите инициализировать поля родителя в иерархии классов, вы должны использовать стандартный путь построения. –