各位DELPHI高手,能否给我讲讲inherited的用法。我只知道他是个继承。但是,对于其他方面的细节就不是很清楚,能否帮我讲解一下。谢谢。

解决方案 »

  1.   

    inherited是面向对象中的一个关键字。他的意思是说调用你类中的某个代码(比如说:函数,过程,事件。}例如:
    类声明如下:
    type
      TFormBase = class(TForm);
      end;
      ...
      TForm1 = class(TFormBase)
      end;
    那么:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      inherited;   //将调用TFormBase中的FormCreate事件。
      Edit1.Text:='';
    end;
      

  2.   

    用法二:
    type
      TFormBase = class(TForm)
        public
          function Execute: Boolean; virtual;
      end;  TForm1 = class(TFOrmBase)
        public
          function Execute: Boolean; override;
      end;
    function TForm1.Execute: Boolean; //你类中定义的一个方法
    begin
      Result:=inherited Execute;  //调用TFormBase类中的EXECUTE方法,将你类返回的结果给
            //TFORM1中的EXECUTE函数的结果。
    end;
      

  3.   

    to zhoutian618(周天) :谢谢你的解答。但我还是有点不 明白。
    你说 “调用你类中的某个代码”,那么具体调用哪歌代码呢?是不是从基类中继承来的所有方法?
    比如:
    类声明如下:
    type
      TFormBase = class(TForm);
      public :
       fun1() : integer;stdcall;
       fun2() :integer :stdcall;
       fun3() : integer :stdcall;
      end;
      ...
      TForm1 = class(TFormBase)
      end;
    那么:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      inherited;   //将调用TFormBase中的FormCreate事件,
                   //它是否会自动调用fun1 fun2 fun3等方法呢?----关键!
      Edit1.Text:='';
    end;
      

  4.   


    ----------------------------------------------------------------
    原贴内容:
    谢谢你的解答。但我还是有点不 明白。
    你说 “调用你类中的某个代码”,那么具体调用哪歌代码呢?是不是从基类中继承不会自动调用fun1, func2,func3如果你要自动调用:
    TForm1.FormCreate(Sender: TObject);
    begin
      inherited FormCreate(Sender);
      inherited Func1();
      interited Func2();
      inherited Func3();
    end;或者是:
    TForm1.FormCreate(Sender: TObject);
    begin
      inherited FormCreate(Sender);
      Func1();
      Func2();
      Func3();
    end;
      

  5.   

    如果只写一个inherited,那么它将调用你类中同名的函数或过程.子类只会自动调用你类中的Create和Destroy方法.其它的方法都不会自动调用的.