请问在父类中怎么调用自己类的虚函数,例如:
TBase = class
procedure fun1; virtual;
procedure default: virtual;
end;TSub = class (TBase)
procedure fun1; override;
end;...procedure TBase.default;
begin
  fun1;//这里希望能够一定调用TBase的fun1,而不会因为fun1被滞后联编调到子类的fun1函数去
end;...
var
a: TSub;
a.Default;//这里希望能够一定调用TBase的fun1,而不会因为fun1被滞后联编调到子类的fun1函数去
谢谢!!!!!!!!

解决方案 »

  1.   

    TBase = class(TObject)
        procedure Fun1; virtual;
        procedure Default; virtual;
      end;  TSub = class(TBase)
        procedure Fun1; override;
        procedure Default; override;
      end;
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TBase }procedure TBase.Default;
    begin
      fun1; //这里你是申明的TBase 的对象的话,他是不会编连到子类的覆盖方法的
    end;procedure TBase.Fun1;
    begin
      ShowMessage('Base');
    end;{ TBase1 }procedure TSub.Default;
    begin
      inherited;end;procedure TSub.Fun1;
    begin
      inherited;end;procedure TForm1.Button1Click(Sender: TObject);
    var
      a: TSub;
    begin
      a := TSub.Create;
      a.Default;  //这里的办法就是使子类只是继承就可以了 即:inherited 就可以
      a.Free;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      a: TBase;
    begin
      a := TBase.Create;
      a.Default;
    end;