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.