理解 Delphi 的类(七) - 认识类的多态
生活随笔
收集整理的這篇文章主要介紹了
理解 Delphi 的类(七) - 认识类的多态
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
什么是多態(tài)? 我的理解就是: 同樣一個(gè)方法, 在不同的對(duì)象里會(huì)有不同的實(shí)現(xiàn), 僅此而已.
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Button3: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);end;//定義了三個(gè)類, 后兩個(gè)類都繼承與第一個(gè)類 TBassTBass = classprocedure alert; virtual; {加上 virtual 指示字, 說明這個(gè)方法可能會(huì)被修改(或叫覆蓋)}{這種方法叫虛方法}end;TChild1 = class(TBass)procedure alert; override; {override 表示修改父類的同名方法}end;TChild2 = class(TBass)procedure alert; override;end;varForm1: TForm1;implementation{$R *.dfm}{ TBass } procedure TBass.alert; beginShowMessage('is Bass'); {同一個(gè)方法, 在不同類里有不同的實(shí)現(xiàn)} end;{ TChild1 } procedure TChild1.alert; beginShowMessage('is TChild1'); {同一個(gè)方法, 在不同類里有不同的實(shí)現(xiàn)} end;{ TChild2 } procedure TChild2.alert; beginShowMessage('is TChild2'); {同一個(gè)方法, 在不同類里有不同的實(shí)現(xiàn)} end;//測試1: procedure TForm1.Button1Click(Sender: TObject); varbass: TBass; {定義 TBass 的變量} beginbass := TBass.Create;bass.alert; {is Bass}bass.Free; end;//測試2: procedure TForm1.Button2Click(Sender: TObject); varbass: TBass; {注意還是定義 TBass 的變量} beginbass := TChild1.Create; {但這里是通過 TChild1 建立對(duì)象}bass.alert; {is TChild1}bass.Free; end;//測試3: procedure TForm1.Button3Click(Sender: TObject); varbass: TBass; {注意還是定義 TBass 的變量} beginbass := TChild2.Create; {但這里是通過 TChild2 建立對(duì)象}bass.alert; {is TChild2}bass.Free; end;{總結(jié): 現(xiàn)在同是 bass.alert 方法, 通過不同對(duì)象的實(shí)現(xiàn), 有了不同的功能, 這就是多態(tài)!} end.
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Button3: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);end;//定義了三個(gè)類, 后兩個(gè)類都繼承與第一個(gè)類 TBassTBass = classprocedure alert; virtual; {加上 virtual 指示字, 說明這個(gè)方法可能會(huì)被修改(或叫覆蓋)}{這種方法叫虛方法}end;TChild1 = class(TBass)procedure alert; override; {override 表示修改父類的同名方法}end;TChild2 = class(TBass)procedure alert; override;end;varForm1: TForm1;implementation{$R *.dfm}{ TBass } procedure TBass.alert; beginShowMessage('is Bass'); {同一個(gè)方法, 在不同類里有不同的實(shí)現(xiàn)} end;{ TChild1 } procedure TChild1.alert; beginShowMessage('is TChild1'); {同一個(gè)方法, 在不同類里有不同的實(shí)現(xiàn)} end;{ TChild2 } procedure TChild2.alert; beginShowMessage('is TChild2'); {同一個(gè)方法, 在不同類里有不同的實(shí)現(xiàn)} end;//測試1: procedure TForm1.Button1Click(Sender: TObject); varbass: TBass; {定義 TBass 的變量} beginbass := TBass.Create;bass.alert; {is Bass}bass.Free; end;//測試2: procedure TForm1.Button2Click(Sender: TObject); varbass: TBass; {注意還是定義 TBass 的變量} beginbass := TChild1.Create; {但這里是通過 TChild1 建立對(duì)象}bass.alert; {is TChild1}bass.Free; end;//測試3: procedure TForm1.Button3Click(Sender: TObject); varbass: TBass; {注意還是定義 TBass 的變量} beginbass := TChild2.Create; {但這里是通過 TChild2 建立對(duì)象}bass.alert; {is TChild2}bass.Free; end;{總結(jié): 現(xiàn)在同是 bass.alert 方法, 通過不同對(duì)象的實(shí)現(xiàn), 有了不同的功能, 這就是多態(tài)!} end.
轉(zhuǎn)載于:https://www.cnblogs.com/del/archive/2008/01/11/1034529.html
總結(jié)
以上是生活随笔為你收集整理的理解 Delphi 的类(七) - 认识类的多态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LaTex】在 LaTex 中优雅地插
- 下一篇: github 上适合java初学者跟的项