Primero, comprenda brevemente el siguiente ejemplo:
¿Qué es el polimorfismo? Mi entendimiento es: el mismo método, habrá diferentes implementaciones en diferentes objetos, nada más. Unidad Unidad1; la interfaz usa Windows, Mensajes, SysUtils, Variantes, Clases, Gráficos, Controles, Formularios, Diálogos, StdCtrls; escriba TForm1 = clase (TForm) Botón1 : TButton; Botón2: TButton; Botón3 : TButton; procedimiento Button1Click (Remitente: TObject); procedimiento Button2Click (Remitente: TObject); procedimiento Button3Click (Remitente: TObject); fin ; / / Se definen tres clases, las dos últimas clases heredan de la primera clase TBass TBass = alerta de procedimiento de clase ; virtual; { Directiva virtual más, que indica que este método puede ser modificado (o llamado anulación) } { este método se llama método virtual } fin ; TChild1 = alerta de procedimiento de clase (TBass) ; anulación ; { anulación significa modificar el mismo nombre de la clase padre Método } fin ; TChild2 = alerta de procedimiento de clase (TBass) ; anulación ; fin ; var Form1: TForm1; implementación { $ R * .dfm } { TBass } procedimiento TBass.alert; comenzar ShowMessage ( ' es Bass ' ); { mismo método, diferentes implementaciones en diferentes clases } end ; { TChild1 } procedimiento TChild1.alert; comenzar ShowMessage ( ' es TChild1 ' ); { mismo método, en diferentes clases Hay diferentes implementaciones } end ; { TChild2 } procedimiento TChild2.alert; begin ShowMessage ( ' is TChild2 ' ); {el mismo método, hay diferentes implementaciones en diferentes clases } end ; // Prueba 1: procedimientoTForm1.Button1Click (remitente: TObject); var bass: TBass; { variable que define TBass } begin bass: = TBass. Create ; bass.alert; { is Bass } bass.Free; end ; // Prueba 2: procedimiento TForm1. Button2Click (Remitente: TObject); var bass: TBass; { Tenga en cuenta que todavía se definen las variables de TBass } begin bass: = TChild1. Create ; { Pero aquí está el objeto creado por TChild1 } bass.alert; { es TChild1 } bass.Free; end ; // Prueba 3: procedimiento TForm1.Button3Click (Remitente: TObject); var bass: TBass; { tenga en cuenta que todavía definen las variables de TBass } begin bass: = TChild2. Create ; { pero aquí está el objeto creado por TChild2 } bass.alert ; { is TChild2 } bass.Free; end ; { Summary: Ahora lo mismo es el método bass.alert, a través de la realización de diferentes objetos, con diferentes funciones, ¡esto es polimorfismo! } end .