У меня есть абстрактный класс (Parent
), который имеет абстрактный метод (doSetup
) и метод члена, который вызывает метод doSetup
. Мне нужен класс child (который реализует Parent
) при построении должен автоматически вызывать метод doSetup
, независимо от того, сколько конструкторов может иметь дочерний класс. Есть ли механизм Java или шаблон проектирования, который мог бы помочь мне решить эту проблему?Как автоматически включить выполнение метода родителя во всех дочерних конструкторах?
public abstract class Parent {
abstract protected void sayHi();
protected void doSetup() {
sayHi();
}
}
public class Child1 extends Parent {
@Override
protected void sayHi() {
System.out.println("hi");
}
public Child1() {
// Construction needs to automatically include exec of doSetup()
}
public Child1(String string) {
// Construction needs to automatically include exec of doSetup()
System.out.println("another constructor");
}
}
Просто вызовите метод doSetup() в конструкторе базового класса s. И если вы хотите включить функциональность базового класса для определенного метода в дальнейшем, просто используйте 'super.methodYouWishToCall()'. – ManoDestra
То, что я пытаюсь получить, - это автоматическое включение, поэтому, когда другие разработчики реализуют «Parent», у них не будет возможности забыть включить вызов 'doSetup' в свои конструкторы. – yamori
Как я уже сказал, применяйте это в конструкторах базового класса. Затем, когда создаются какие-либо подклассы, необходимо вызвать конструктор базового класса, обеспечивающий выполнение этого метода для вызова. Я могу написать это как ответ для вас, если вы не знаете, что я имею в виду здесь. – ManoDestra