1. وقتى که یه کلاس فرزند (Child) موقع Override کردن یکى از Methodهاى Virtual کلاس والد (Parent) مىخواد تا عین همون Method رو از والدش فراخوانى کنه از دستور inherited استفاده مىکنه. مثلا مىخواى توى Create اول کارهایى رو که والد براى Create شدن انجام مىده رو انجام بدى بعد یه چیزایى رو به اون اضافه کنى. مىنویسى :
inherited Create({Parameter List);
{Do something ...}
اگه inherited رو صدا نکنى Method والد صدا نمىشه. در ضمن فقط براى Create استفاده نمىشه مثال زیر رو ببین:
type
TParent = class
public
function Foo(Bar: Integer): Integer; virtual;
end;
TChild = class (TParent)
public
function Foo(Bar: Integer): Integer; override;
end;
function TParent.Foo(Bar: Integer): Integer;
begin
Result := Bar * 2;
end;
function TChild.Foo(Bar: Integer): Integer;
begin
Result := inherited Foo(Bar); // returns Bar * 2
Result := Result * 3;
end;
اگه به Foo یه Object از نوع TParent مثلا 2 رو بدى بهت 4 رو بر مىگردونه و اگه این Object از نوع TChild باشه همون 2 رو بدى بهت 6 برمىگردونه.
2. دو خط دستور هیچ فرقى با هم ندارن یعنى هر کدوم رو صدا بزنى این اتفاق مىافته چه inherited چه inherited ... رو. توى پاسکال و Versionهاى قدیمىتر (Compilerهاى قبل از 3) باید از دومى استفاده کنى.