Require override of method to call super

前端 未结 7 2350
既然无缘
既然无缘 2020-12-17 08:11

I want that when a child class overrides a method in a parent class, the super.method() is called in that child method.

Is there any way to check this a

7条回答
  •  無奈伤痛
    2020-12-17 09:02

    There's no way to require this directly. What you can do, however, is something like:

    public class MySuperclass {
        public final void myExposedInterface() {
            //do the things you always want to have happen here
    
            overridableInterface();
        }
    
        protected void overridableInterface() {
            //superclass implemention does nothing
        }
    }
    
    public class MySubclass extends MySuperclass {
        @Override
        protected void overridableInterface() {
            System.out.println("Subclass-specific code goes here");
        }
    }
    

    This provides an internal interface-point that subclasses can use to add custom behavior to the public myExposedInterface() method, while ensuring that the superclass behavior is always executed no matter what the subclass does.

提交回复
热议问题