你用的继丞方法错了,
像你这样的代码,应该加overload
type
  TChild = class(TFather)
  public
    function Hello(A1: Integer; A2: Integer): String;overload//加入
  end;
以下代码改为 function TChild.Hello(A1: Integer; A2: Integer): String;
  begin
    inherited 
    Result := IntToStr(S1 + S2);
  end;

解决方案 »

  1.   

    我主要是希望知道 如何 用 inherited 就算是一个 1+1 = 2 的简单程序都可以,我愿意加分~~
    Q:24138511
      

  2.   

    这是个简单的例子:基类是TBase,继承类是TDerive,都有方法method1。
    type
      TBase=class
      public
         procedure method1;virtual;
      end;
      TDerive=class (TBase)
      public
         procedure method1;override;
      end;
    var
      Form1: TForm1;implementation{$R *.dfm}
    procedure TBase.method1;
    begin
       ShowMessage('Base method1');
    end;
    procedure TDerive.method1 ;
    begin
       ShowMessage('Derive method1');
       inherited;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
       Base:Tbase;
       Derive:TDerive;
    begin
       Derive:=TDerive.Create ;
       Derive.method1;
    end;
    点击button,可以看到有inherited就会调用基类的method1,没有inherited就
    只执行继承类的method1,而不执行基类的method1。
      

  3.   

    不充两句,不用这种虚拟的方法也可以。
    type
       TMyClass=Class
       procedure Method1;virtual;
       procedure Method2;
       end;
       TMySubClass=Class(TMyClass)
       procedure Method1;override;
       procedure Method2;
       end;
    procedure TMySubClass.Method1;
    begin
       inherited Method1;//执行父类的Method1
    ......
    end;
    procedure TMySubClass.Method2;
    begin
       TMyClass.Method2;//执行父类的Method2
    ......
    end;