Clases y objetos Delphi (8) -polimorfismo

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 .

 

Supongo que te gusta

Origin www.cnblogs.com/fansizhe/p/12723845.html
Recomendado
Clasificación