抽象方法和虚方法和Override
来源:互联网 发布:暴风转码mac版 编辑:程序博客网 时间:2024/05/03 12:20
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;