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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…