结论:
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.