Liste des Groupes | Revenir à col misc |
John Ames <commodorejohn@gmail.com> wrote or quoted:rather than having to remember the distinction between:
void sliceApple(apple * f)
and:
void slicePear(pear * f)
one could simply write:
fruitPile[i++].slice();
and trust that the Right Thing will be done.
Ah! I think this is called "polymorphism".
I wondered whether something like this could
also be formulated in Pascal.
(Unintentionally, I return to the topic
of the subject somewhat.)
PROGRAM ANIMALSOUNDS( OUTPUT );
TYPE
ANIMALTYPE =( DOG, CAT );
ANIMAL = RECORD
ANIMALKIND: ANIMALTYPE;
END;
FUNCTION SOUND( ANIMAL: ANIMAL ): STRING;
BEGIN
CASE ANIMAL.ANIMALKIND OF
DOG: SOUND := 'WOOF!';
CAT: SOUND := 'MEOW!';
END;
END;
VAR MYDOG, MYCAT: ANIMAL;
BEGIN
MYDOG.ANIMALKIND := DOG;
MYCAT.ANIMALKIND := CAT;
WRITELN( 'IT SAYS: ', SOUND( MYDOG ));
WRITELN( 'IT SAYS: ', SOUND( MYCAT ));
END.
Output:
IT SAYS: WOOF!
IT SAYS: MEOW!
Les messages affichés proviennent d'usenet.