虚拟方法问题
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TBase = Class(Tobject)
public procedure VM1;virtual;
public procedure VM2;virtual;
end;
TDerived1 = Class(TBase)
public procedure VM1;virtual;
// public procedure VM2;virtual;
end;
TDerived2 = Class(TDerived1)
public procedure VM1;virtual;
// public procedure VM2;virtual;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
aChild: TDerived2 ;
begin
aChild := TDerived2.Create;
try
aChild.VM1;
finally
aChild.Free;
end;
end;
{ TBase }
procedure TBase.VM1;
begin
showmessage('TBase.VM1');
end;
procedure TBase.VM2;
begin
end;
procedure TDerived2.VM1;
begin
inherited VM1;
showmessage('TDerived2.VM1');
end;
{ TDerived1 }
procedure TDerived1.VM1;
begin
showmessage('TDerived1.VM1');
end;
end.
现在我想继承自TDerived1类TDerived2调用Base.VM1,
但不想改动TDerived1,如何办到???