type
Tplane = class
public
procedure fly; virtual; abstract; //声明父类抽象方法,op多态
end;
type
Tcopter = class(Tplane)
public
procedure fly; override; //子类重写
end;
type
Tjet = class(Tplane)
public
procedure fly; override; //子类重写
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Tcopter.fly; //子例实例化
begin
ShowMessage('i''m Tcopter');
end;
//子类实例化
procedure Tjet.fly;
begin
ShowMessage('i''m Tjet');
end;
procedure Plane_fly(const PPlane: Tplane);
begin
PPlane.fly;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
copter: Tplane;
begin
copter := Tcopter.Create; //取决由调用实际类型,非定义变量类型
Plane_fly(copter);
copter.Destroy;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Jet: Tplane;
begin
Jet := Tjet.Create; //取决由调用实际类型,非定义变量类型
Plane_fly(Jet);
Jet.Free;
end;
抽象方法和虚方法和Override
最新推荐文章于 2022-01-28 22:28:05 发布