델피의 클래스 이해(7) - 인식류의 다태

1848 단어 Delphi
무엇이 다태입니까?나의 이해는 같은 방법이 서로 다른 대상에서 서로 다른 실현을 할 수 있다는 것이다. 단지 이것뿐이다.


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

  end;



  //      ,              TBass

  TBass = class

    procedure alert; virtual; {   virtual    ,             (    )}

    {        }

  end;



  TChild1 = class(TBass)

    procedure alert; override; {override            }

  end;



  TChild2 = class(TBass)

    procedure alert; override;

  end;





var

  Form1: TForm1;



implementation



{$R *.dfm}



{ TBass }

procedure TBass.alert;

begin

  ShowMessage('is Bass');    {     ,            }

end;



{ TChild1 }

procedure TChild1.alert;

begin

  ShowMessage('is TChild1'); {     ,            }

end;



{ TChild2 }

procedure TChild2.alert;

begin

  ShowMessage('is TChild2'); {     ,            }

end;





//  1:

procedure TForm1.Button1Click(Sender: TObject);

var

  bass: TBass; {   TBass    }

begin

  bass := TBass.Create;

  bass.alert; {is Bass}

  bass.Free;

end;



//  2:

procedure TForm1.Button2Click(Sender: TObject);

var

  bass: TBass;            {       TBass    }

begin

  bass := TChild1.Create; {       TChild1     }

  bass.alert; {is TChild1}

  bass.Free;

end;



//  3:

procedure TForm1.Button3Click(Sender: TObject);

var

  bass: TBass;            {       TBass    }

begin

  bass := TChild2.Create; {       TChild2     }

  bass.alert; {is TChild2}

  bass.Free;

end;



{  :      bass.alert   ,          ,        ,      !}

end.


 
   

좋은 웹페이지 즐겨찾기