接口实现多重继承

刚学习接口的使用,上传下记录自己的脚步

 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.

 

posted @ 2013-10-17 12:16  空水瓶  阅读(168)  评论(0)    收藏  举报