Search code examples
javaextendsradix

How to create a java method on a base class that calls other methods?


I'm trying to build a base class with a method that needs to call a private method before and after performing the actual logic.

public abstract class Base {

  public Base() {}

  private void before() {
    // doSomething
  }

  private void after() {
    // doSomething
  }

  public void actual(Object object) {
    before();
    // doSomething
    after();
  }

}

public class SomeClass extends Base {

  public SomeClass() {}

  public void actual(Object object) {
    // actual code that needs to be executed between before and after methods.
  }

}

How would I go about this?


Solution

  • Create another method that can be overridden and implemented instead of overriding actual directly.

    E.g.

    public void actual(Object object) {
        before();
        doActual(object);
        after();
    }
    
    protected abstract void doActual(Object object);
    

    You could make the actual() method final if you want to ensure that nobody overrides it by mistake.