抽象方法和虚方法和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;

原创粉丝点击