当前位置: 首页> 休闲娱乐> 漫画> 正文

inherited怎么读(herited是什么意思)

  • Devil_xiaoyueDevil_xiaoyue
  • 漫画
  • 2022-12-18 22:14:19
  • -
|in'heritid| 遗传的 参考   29、七门功课红灯,照亮我的前程。 去下个有道词典,一了百了 inherited就是调用祖先类的函数,如果不带参数就是默认调用同名函数
如果带参数则表明子类中的函数个数可能比祖先类要多取其中的几个参数传过去
例如
祖先类有个函数 Create(AName:string);
子类有个函数 Create(AName:string;AComponent:TObject);override;
那么子类的Create函数内就可以这样调用祖先类:
procedure TAClass.Create(AName:string;AComponent:TObject);
begin
Inherited Create(AName);
end; inherited就是调用祖先类的函数,如果不带参数就是默认调用同名函数
如果带参数则表明子类中的函数个数可能比祖先类要多取其中的几个参数传过去
例如
祖先类有个函数 Create(AName:string);
子类有个函数 Create(AName:string;AComponent:TObject);override;
那么子类的Create函数内就可以这样调用祖先类:
procedure TAClass.Create(AName:string;AComponent:TObject);
begin
Inherited Create(AName);
end; Create是类的构造(constructor)函数,每个类都有构造函数,通过调它创建类的实例,比如:
var obj:TObject;
begin
obj:=TObject.Create;//创建
try
//使用....
finally
obj.free;//释放
end;
end;

当你写一个类,它会默认继承祖先类的构造函数,不过你可以把祖先的盖掉,加上自己的参数,比如:
TmyObj=Class(TObject)
public
constructor Create(const s:string);//覆盖祖先的构造函数
destructor Destroy;override;
end;
//...
constructor TmyObj.Create(const s:string);
begin
inherited;//调用祖先的构造
//处理自己的内容。。。
end;

每个类除了有构造函数,还有个析构函数(destructor),类释放的时候就会调用。只能简单的说这么多,还有不明白的找本基础的书看看吧 Create是构造函数,Create函数是TObject就有了的
比如:
var a: TClassA;
a:= TClassA.Create;
a此刻实际上是获得了TClassA.Create返回的实例句柄,你可以认为此时a仍然只是一个变量,只不过a中是TClassA所创建的对象的地址.
如刘艺所说:这个a相当于一口锅的把柄,有了把柄你就可能随便操作这口锅.
如果单纯调用 TClassA.Create而不将它返回的句柄赋予某变量的话,那TClassA也会创建一个对象,只不过没办法去操作它而已,但它依然存在.
Create是一个特殊的类方法,一般用来在创建对象时,同时初始某些数据成员.

建议看看刘艺大作 面向对象编程思想 一书 CreateDirectory可以再创建目录是指定文件夹的属性,CreateDir则不能。 CreateDirectory 可以创建多级目录 CreateDir也是通过调用CreateDirectory实现的,只是简化了参数,并且增加了LINUX支持。
CreateDirectory只能用于windows编程。CreateDir在linux下Kylix也能调用,使代码的兼容性、可移植性更强。

在SysUtils单元中:
function CreateDir(const Dir: string): Boolean;
begin
{$IFDEF MSWINDOWS}
Result := CreateDirectory(PChar(Dir), nil);
{$ENDIF}
{$IFDEF LINUX}
Result := __mkdir(PChar(Dir), mode_t(-1)) = 0;
{$ENDIF}
end;