unit Unit1;
interface
uses
Classes, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
TBase = class
procedure proc1; virtual;
procedure proc2;
end;
TChild = class(TBase)
procedure proc1; override;
procedure proc2;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TBase }
procedure TBase.proc1;
begin
ShowMessage('B1');
end;
procedure TBase.proc2;
begin
ShowMessage('B2');
end;
{ TChild }
procedure TChild.proc1;
begin
//inherited;
ShowMessage('C1');
end;
procedure TChild.proc2;
begin
ShowMessage('C2');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
B: TBase;
C: TChild;
BC: TBase;
begin
B := TBase.Create;
C := TChild.Create;
BC := TChild.Create;
B.proc1; //B1
B.proc2; //B2
TChild(B).proc1; //B1
TChild(B).proc2; //C2
C.proc1; //C1
C.proc2; //C2
TBase(C).proc1; //C1
TBase(C).proc2; //B2
BC.proc1; //C1
BC.proc2; //B2
TBase(BC).proc1; //C1
TBase(BC).proc2; //B2
TChild(BC).proc1; //C1
TChild(BC).proc2; //C2
B.Free;
C.Free;
BC.Free;
end;
end.