Use SUPER inside an overridden method to invoke the parent implementation, then add/alter behavior.
Building an extension on a house: you rely on the existing foundation (SUPER) and add rooms.
123456789101112131415CLASS-ID. BASE. METHOD-ID. CALC TOTAL PUBLIC. PROCEDURE DIVISION USING AMT RETURNING RES. MOVE AMT TO RES EXIT METHOD. END METHOD CALC. END CLASS BASE. CLASS-ID. DERIVED INHERITS FROM BASE. METHOD-ID. CALC OVERRIDE. PROCEDURE DIVISION USING AMT RETURNING RES. INVOKE SUPER "CALC" USING AMT RETURNING RES ADD 10 TO RES EXIT METHOD. END METHOD CALC.
Signature must match; call SUPER first, then customize.
Mistake | Problem | Fix |
---|---|---|
Not calling SUPER when required | Violates base class contract | Call SUPER or re-implement contract |
Changing signature | Not an override | Match parent signature |
Action | Syntax | Example |
---|---|---|
Call parent | INVOKE SUPER "name" | INVOKE SUPER "INIT" |
Override | METHOD-ID. name OVERRIDE | METHOD-ID. CALC OVERRIDE |
1. What does SUPER refer to?
2. How to call the parent method?
3. When to use SUPER?