Polymorphism, basically, is many implementations of the same method for two or more classes of objects. This is known in SOM as method overrides, or override resolution. SOM supports various types of polymorphism, so it readily can be mapped into different object-oriented languages.

As child classes are derived from parent classes, inherited methods can be overridden. For example, suppose that ClassB is a child of ClassA, as illustrated in the following figure:

     Definition of ClassA                       Definition of ClassB
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³                               ³        ³                                ³
³    MethodA:                   ³        ³      MethodA:                  ³
³      Print something          ³ÄÄÄÄÄÄij        Print something else    ³
³                               ³        ³                                ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ        ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

MethodA is one of the methods defined for ClassA. It also is one of the methods defined for ClassB and is inherited from ClassA. In SOM, MethodA can be overridden in the definition of ClassB to do different things for ClassB. MethodA, therefore, is defined for both ClassA and ClassB but is implemented differently for ClassA and ClassB. This means that method resolution requires the name of the method as well as the object being acted upon.


[Back] [Next]