unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; TBaseClass = class(TObject)
// 定义一个新的父类
protected
FMessage: string;
public
constructor Create(); // 构造方法
procedure MessageBox();virtual; // 显示字符串
end;
TChildClass = class(TBaseClass)
// 定义一个TBaseClass的派生类
public
procedure MessageBox();override; // 重载父类中的方法
end;
var
Form1: TForm1;implementation{$R *.dfm}
constructor TBaseClass.Create;
begin
inherited Create(); // 继承父类中的构造方法Create
FMessage:= ClassName; // 初始化信息字符串为类名
end; procedure TBaseClass.MessageBox;
begin
ShowMessage(FMessage); // 显示字符串
end; procedure TChildClass.MessageBox;
begin
FMessage:= FMessage + FMessage;
inherited MessageBox(); // 继承父类中原有MessageBox方法的原有功能
end;procedure TForm1.Button1Click(Sender: TObject);
var
Child: TChildClass;
begin
Child:= TChildClass.Create;
Child.MessageBox();
Child.Free;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; TBaseClass = class(TObject)
// 定义一个新的父类
protected
FMessage: string;
public
constructor Create(); // 构造方法
procedure MessageBox();virtual; // 显示字符串
end;
TChildClass = class(TBaseClass)
// 定义一个TBaseClass的派生类
public
procedure MessageBox();override; // 重载父类中的方法
end;
var
Form1: TForm1;implementation{$R *.dfm}
constructor TBaseClass.Create;
begin
inherited Create(); // 继承父类中的构造方法Create
FMessage:= ClassName; // 初始化信息字符串为类名
end; procedure TBaseClass.MessageBox;
begin
ShowMessage(FMessage); // 显示字符串
end; procedure TChildClass.MessageBox;
begin
FMessage:= FMessage + FMessage;
inherited MessageBox(); // 继承父类中原有MessageBox方法的原有功能
end;procedure TForm1.Button1Click(Sender: TObject);
var
Child: TChildClass;
begin
Child:= TChildClass.Create;
Child.MessageBox();
Child.Free;
end;end.
需要从父类继承使用override
var
Child: TBaseClass;
begin
Child:= TChildClass.Create;
Child.MessageBox();
Child.Free;
end; 如果你的调用代码改成这样,然后再试试不同的情况!