type
  TOO = class
  public
  tmp:string;
  function HI(S: String): String; virtual;
end;type
  TC = class(TOO)
  function HI(S: String): String; override;
end;
var
  Form1: TForm1;
  OO: TOO;
  C: TC;
implementation{$R *.DFM}function TOO.HI(S: String): String;
begin
  tmp:=S + ' TOO.HI';
  HI := S + ' TOO.HI';
  
end;function TC.HI(S: String): String;
begin
  inherited HI('我继承了!'); // 让上一个 方法 起点作用  HI := tmp+S + ' HERE!';
 end;
procedure TForm1.FormClick(Sender: TObject);
begin
  OO := TOO.Create;//没必要!!!
  C := TC.Create;  ShowMessage (C.HI('C.HI'));  OO.Free;
  C.Free;end;end.

解决方案 »

  1.   

    我刚刚意识到~~
    Inherited & Abstract 我的理解,大家打分看看我的学习成绩~
    Inherited 是不是执行父类的某个方法,然后再从新加一点自己的代码进去,执行的时候父类的那个方法执行了,子类中后面加上的指令也运行了~Abstract 在最顶层的父类上是没有实际的执行代码段的,但是在子类中 override 以后就必须要具有实际代码段~
    在编译时候会出现一个
    [Warning] Project1.dpr(40): Constructing instance of 'TF' containing abstract methods 说明了父类中的 Abstract 方法是不能被调用的(编译器提示我们开发人员的)结了~~~~~