У меня есть нечто, что в принципе напоминает следующее:
public class Generic {
public Generic(){
doStuff();
}
protected void doStuff(){
System.out.println("Generic");
}
}
public class Specific extends Generic {
public Specific(){
super();
}
protected void doStuff(){
super.doStuff();
System.out.println("Specific");
}
}
Ошибки, которые я получаю, указывают на то, что хотя метод вызывается из суперкласса, он вызывает версию метода подкласса. В приведенном выше примере создание нового Specific будет выводить как «Generic», так и «Specific», хотя doStuff () был вызван конструктором Generic.
Короче говоря, я этого не хочу. В методе подкласса есть некоторые дополнительные функции, которые вызывают проблемы, если он вызывается до полной инициализации объекта. Как я могу в конструкторе суперкласса заставить его использовать собственную версию метода, а не самую специализированную?