关于inherited的使用(100分)

  • 主题发起人 主题发起人 shijiesun3
  • 开始时间 开始时间
S

shijiesun3

Unregistered / Unconfirmed
GUEST, unregistred user!
表示类的继承?在一段代码中出现了inherited,看不出继承什么了?
 
执行父类的同名方法,
 
比如TScrollingWinControl继承了TWinControl
在TScrollingWinControl的Create方法中
inherited Create(AOwner);这句就表示执行了下面的代码

-------------------------------------------------------------------
constructor TWinControl.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
{$IFDEF LINUX}
FObjectInstance := WinUtils.MakeObjectInstance(MainWndProc);
{$ENDIF}
{$IFDEF MSWINDOWS}
FObjectInstance := Classes.MakeObjectInstance(MainWndProc);
{$ENDIF}
FBrush := TBrush.Create;
FBrush.Color := FColor;
FParentCtl3D := True;
FTabOrder := -1;
FImeMode := imDontCare;
if SysLocale.PriLangID = LANG_JAPANESE then
FImeName := ''
else
FImeName := Screen.DefaultIme;
FUseDockManager := False;
FBevelEdges := [beLeft, beTop, beRight, beBottom];
FBevelInner := bvRaised;
FBevelOuter := bvLowered;
FBevelWidth := 1;
FHelpType := htContext;
end;
------------------------------------------------------------------

执行完它之后才是它自己本身的Create方法执行.

constructor TScrollingWinControl.Create(AOwner: TComponent);
begin
inherited Create(AOwner);//执行 TWinControl.Create
ControlStyle := ControlStyle + [csNeedsBorderPaint];
FHorzScrollBar := TControlScrollBar.Create(Self, sbHorizontal);
FVertScrollBar := TControlScrollBar.Create(Self, sbVertical);
FAutoScroll := True;
end;
 
inherited后面不跟任何方法名称表示继承父类中同名的方法;也可以在其后指定一个方法名称,指定执行父类中某一方法。
 
后退
顶部