Overriding an instance method
An instance method that is defined in a subclass is said to override an inherited instance method that would otherwise be accessible in the subclass if the two methods have the same signature.
About this task
To
override a superclass instance method m1 in a COBOL subclass, define
an instance method m1 in the subclass that has the same name and whose PROCEDURE
DIVISION USING
phrase (if any) has the same number and type
of formal parameters as the superclass method has. (If the superclass
method is implemented in Java™,
you must code formal parameters that are interoperable with the data
types of the corresponding Java parameters.)
When a client invokes m1 on an instance of the subclass, the subclass
method rather than the superclass method is invoked.
For example,
the Account class defines a method debit
whose LINKAGE
SECTION
and PROCEDURE DIVISION
header look
like this:
Linkage section.
01 inDebit pic S9(9) binary.
Procedure Division using by value inDebit.
If you define a CheckingAccount subclass and want
it to have a debit
method that overrides the debit
method
defined in the Account superclass, define the subclass method with
exactly one input parameter also specified as pic S9(9) binary
.
If a client invokes debit
using an object reference
to a CheckingAccount instance, the CheckingAccount debit
method
(rather than the debit
method in the Account superclass)
is invoked.
The presence or absence of a method return value
and the data type of the return value used in the PROCEDURE
DIVISION RETURNING
phrase (if any) must be identical in the
subclass instance method and the overridden superclass instance method.
An instance method must not override a factory method in a COBOL superclass nor a static method in a Java superclass.