接口实现多重继承
刚学习接口的使用,上传下记录自己的脚步
1 unit Ucat; 2 3 interface 4 uses System.SysUtils,Windows,Messages,System.Classes,Vcl.Graphics,Vcl.Controls,Vcl.Forms; 5 6 type 7 IAction = interface(IInterface) 8 function say: string; 9 end; 10 ICat = interface(IAction) 11 12 end; 13 IDoraemon = interface(IAction) 14 end; 15 16 TProperty= class(TInterfacedObject) 17 private 18 Fname: string; 19 public 20 constructor create; 21 property name:string read Fname write Fname; 22 end; 23 24 TCat = class(TProperty,ICat) 25 26 private 27 FColor :string; 28 function say:string; 29 public 30 constructor Create; 31 property Color:string read FColor write FColor; 32 end; 33 34 TDoraemon = Class(TProperty,IDoraemon) 35 private 36 function say: string; 37 End; 38 39 TAdmix = Class(TProperty,ICat,IDoraemon) 40 public 41 constructor Create; 42 function say:string; 43 End; 44 45 46 47 48 implementation 49 50 { TCat } 51 52 constructor TCat.Create; 53 begin 54 FColor:='白色'; 55 end; 56 57 function TCat.say: string; 58 begin 59 result:= '喵!' 60 end; 61 62 { TProperty } 63 64 constructor TProperty.create; 65 begin 66 Fname := '猫'; 67 inherited; 68 end; 69 70 { TDoraemon } 71 72 function TDoraemon.say: string; 73 begin 74 result:= '我是哆啦a梦'; 75 end; 76 77 { TAdmix } 78 79 constructor TAdmix.Create; 80 begin 81 inherited; 82 end; 83 84 function TAdmix.say: string; 85 var 86 cat: ICat; 87 doraemon:Idoraemon; 88 begin 89 cat:= TCat.Create; 90 doraemon:= TDoraemon.create; 91 result:= cat.say+doraemon.say; 92 end; 93 94 end.
1 unit Uadmin; 2 3 interface 4 5 uses 6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; 8 9 type 10 TForm1 = class(TForm) 11 Button1: TButton; 12 procedure Button1Click(Sender: TObject); 13 private 14 { Private declarations } 15 public 16 { Public declarations } 17 end; 18 19 var 20 Form1: TForm1; 21 22 implementation 23 uses Ucat; 24 25 {$R *.dfm} 26 27 procedure TForm1.Button1Click(Sender: TObject); 28 var 29 Admix: TAdmix; 30 begin 31 Admix:= TAdmix.create; 32 messagebox(handle,PWideChar(Admix.say),'猫',mb_ok); 33 end; 34 35 end.

浙公网安备 33010602011771号