[M3devel] calling an overridden method

Mika Nystrom mika at async.caltech.edu
Tue Jul 19 16:02:55 CEST 2011


TYPE A = OBJECT METHODS m(xxx) END;

TYPE B = A OBJECT METHODS m(xxx) END;

b := NEW(B);

A.m(b,xxx)

      Mika

Hendrik Boom writes:
>I have a module containing a parent class, and another containing a 
>child class.
>
>The parent class contains a method 'foo', which is to be overridden in 
>the child class.
>
>But in implementing 'foo' in the child class I want to call the parent's 
>method.
>
>Now with the method 'init' there's a trick where in the child's init,
>you WIDEN self to the parent's type and then call its init.
>This works because 'init' isn't overridden in an OVERRIDES clause,
>but is defined as a new method that happens to have the same name.
>
>Is there any way to do this with 'foo', where the whole point is that
>it be an overridden method and not a new one?
>
>Do I have to do something like covertly exporting the PROCEDURE that 
>implements 'foo' in the parent's module so that it can be called 
>directly? That would seem to be a violation of modular design.  Or is 
>violating modular design exactly what I'm really trying to do here?
>
>-- hendrik



More information about the M3devel mailing list