每個 Delphi 專案預設產生的表單,本質就是繼承:
TForm1 = class(TForm) // TForm1 繼承 TForm
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
TForm 是父類別(基底類別)TForm1 是子類別(衍生類別)
TBass = class
procedure Msg1;
end;
TChild = class(TBass) // 繼承 TBass
procedure Msg2;
end;
procedure TBass.Msg1;
begin
ShowMessage('is Bass');
end;
procedure TChild.Msg2;
begin
ShowMessage('is Child');
end;
var B: TBass;
begin
B := TBass.Create;
B.Msg1; // 正常
// B.Msg2; // 編譯錯誤:父類別沒有 Msg2
B.Free;
end;
var C: TChild;
begin
C := TChild.Create;
C.Msg1; // 繼承自父類別,輸出: is Bass
C.Msg2; // 自己的方法,輸出: is Child
C.Free;
end;
public/protected/published 成員會被繼承;private 不會(但同單元可見)。繼承是程式碼重複使用的基石。從 VCL 表單到自訂類別,掌握「父類別定義共用行為,子類別擴充或修改」的設計模式,能建構清晰的類別階層。