请问子类怎么调用父类(2层)的同名函数
比如这样的,仅仅返回参数不同
ta = class
  function aaa: boolean;tb = class(ta)
  function aaa: string;tc = class(tb)
  function aaa: integer;我要在tc的aaa里调用父类ta的aaa,用inherited的话调用到的是tb的aaa函数
  

解决方案 »

  1.   

    function tc.aaa: integer;
    begin
      ta(Self).aaa;
    ....................^_^
      

  2.   

    不要跟楼上的学..应该用下面的
    Inherited.aaa
      

  3.   


    //------------------------------------------------------------------------------
    // 替代Inherited,执行祖先的某个Event
    //exp.
    //procedure TfrmBOM2.FormCreate(Sender: TObject);
    //begin
    //  InheritedParentsNotifyEvent(self,'FormCreate',self.ClassParent.ClassParent,Sender);//他爷爷的事件
    //  inherited;
    //......
    //------------------------------------------------------------------------------
      procedure InheritedParentsNotifyEvent(const SelfPointer:Pointer;
        const EventName:string;ParentClass:TClass;Sender:TObject);procedure InheritedParentsNotifyEvent(const SelfPointer:Pointer;const EventName:string;ParentClass:TClass;Sender:TObject);
    var M:TMethod;P:Pointer;
    begin
      p := ParentClass.MethodAddress(EventName);
      if p = nil then exit;
      M.Code := p;
      M.Data := SelfPointer;
      TNotifyEvent(M)(Sender);
    end;