首页 > 代码库 > inherited 的研究。

inherited 的研究。

结论:

1. inherited默认调用的是父类的同名 同参数方法。(常用,如果是同名 同参数方法 比如 overide 的,可以省略,只写个inherited就可。)

2. 子类的方法里可以 inherited+ 父类的其它非同名 同参数方法。见:下方 son3

 

若父类不存在 同名 同参数方法 则编译报错。如下图:

技术分享

 

技术分享

 

unit Unit6;interfaceuses  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Samples.Gauges;type  TForm6 = class(TForm)    Button1: TButton;    procedure Button1Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;  TFather = class    public      constructor Create; overload;      constructor Create(const str: string); overload;  end;  TSon = class(TFather)    public      constructor Create; overload;      constructor Create(const str: string); overload;      constructor Create(const str1, str2: string); overload;  end;var  Form6: TForm6;implementation{$R *.dfm}{ TFather }constructor TFather.Create;begin  OutputDebugString(father);end;constructor TFather.Create(const str: string);begin  OutputDebugString(PChar(str));end;{ TSon }constructor TSon.Create;begin  inherited;end;constructor TSon.Create(const str: string);begin  inherited;end;constructor TSon.Create(const str1, str2: string);begin  //inherited; //父类没有两个参数的函数的时候会怎样?  inherited Create(str1 + str2); //这里用了 非同名 同参数方法end;procedure TForm6.Button1Click(Sender: TObject);var  son1, son2, son3: TSon;begin  son1 := TSon.Create;  son2 := TSon.Create(test);  son3 := TSon.Create(abc, cde);  son1.Free;  son2.Free;  son3.Free;end;end.

 

inherited 的研究。