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 at compile time?
If not, how would I go about throwing a runtime exception when this happens?
A subclass can override methods of its superclass, substituting its own implementation of the method for the superclass's implementation.
Invoking overridden method from sub-class : We can call parent class method in overriding method using super keyword. Overriding and constructor : We can not override constructor as parent and child class can never have constructor with same name(Constructor name must always be same as Class name).
If both parent & child classes have the same method, then the child class would override the method available in its parent class. By using the super keyword we can take advantage of both classes (child and parent) to achieve this. We create an object of child class as it can inherit the parent class methods.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With