各位大哥,小弟一object Pascal 的问题恳请帮忙解决:
我定义了这样三个类:
  TMyClass1 = class(TObject)
  private
    { Private declarations }
  protected
    procedure fun1(); virtual;
  public
    { Public declarations }
  end;  TMyClass2 = class(TMyClass1)
  private
    { Private declarations }
  protected
    procedure fun1(); override;
  public
    { Public declarations }
  end;  TMyClass3 = class(TMyClass2)
  private
    { Private declarations }
  protected
    procedure fun1(); override;
  public
    { Public declarations }
  end;procedure TMyClass1.fun1();
begin
  showmessage('TMyClass1.fun1() is Called';
end;procedure TMyClass2.fun1();
begin
  showmessage('TMyClass2.fun2() is Called';
  inherited;
end;procedure TMyClass3.fun1();
begin
  showmessage('TMyClass2.fun3() is Called';
  inherited;
end; 在我的 TMyClass3.fun1()函数中,inherited语句实际上调用的是
TMyClass2.fun1()函数,但假如我想在我的 TMyClass3.fun1()函数
中直接使用TMyClass1.fun1()这个函数,我该如何处理??? !!!!!!!  急急急急急急急急急急急急急急 !!!!!!!

解决方案 »

  1.   

    好像没有办法了吧!
     inherited TMyClass1(Self).fun1;
    不知道可不可以!
      

  2.   


     inherited TMyClass1(Self).fun1;
      

  3.   

    inherited TMyClass1(Self).fun1;在语法上都编译不过去
      

  4.   

    可以改动一下://申明部分
    TMyClass3 = class(TMyClass2)
      private
        { Private declarations }
        aObj:TMyClass1;
      protected
        procedure fun1(); override;
      public
        { Public declarations }
      end;
    //实现部分
    procedure TMyClass3.fun1();
    begin
      aObj:=TMyClass1.Create;
      aObj.fun1;
      aObj.free;
    end;
      

  5.   

    我主要是想修改Delphi7自带的VCL组件,但是VCL组件的层次太多了,假如可以这样调用法,我就可以屏蔽一些中间层次的功能,
      

  6.   

    Delphi7自带的VCL都是经过精心设计的,最好还是不要改的好
      

  7.   

    不可能这样的
    这是Delphi设计的时候专门规定的,已避免继承层次深了以后行为混乱。要是屏蔽功能,可以去比较高的层次的类自己进行派生。
    关于改VCL,Borland的建议是,不要在代码上直接修改,可以选择合适的基类,进行派生完成你要的功能。面向对象的复用可不是把代码拷来改改这样复用法的。
      

  8.   

    要跳过中间层,调用时这样处理:
    var
      C3: TMyClass3;
    begin
      TMyClass1(C3) := TMyClass1.Create();
      C3.fun1;
      FreeAndNil(C3);
    end;
      

  9.   

    那你何苦给它声明成TMyClass3啊,它又不能真的当一个TMyClass3来用
    掩耳盗铃罢了