Delphi 接口(7)-不对等的多重继承
发布时间:2020-12-15 09:54:35 所属栏目:大数据 来源:网络整理
导读:? unit uSayHello; interface uses SysUtils,Windows,Messages,Greaphics,Controls,Forms,Dialogs; type ISeakChinese = interface (IInterface) function SayHello: string ; end ;ISpeakEndlish = interface (IInterface) function SayHello: string ; end
? unit uSayHello; interface uses SysUtils,Windows,Messages,Greaphics,Controls,Forms,Dialogs; type ISeakChinese = interface(IInterface) function SayHello: string; end; ISpeakEndlish = interface(IInterface) function SayHello: string; end; TMan = class(TInterfacedObject) private FName: string; public property Name: string read FName write FName; end; TChinese = class(TMan,ISpeakChinese) private PSkinColor: string; function SayHello: string; public constructor create; property SkinColor: TType read FSkinColor write FSkinColor; end; TAmerican = class(TMan,ISpeakEndlish) function SayHello: string; end; TAmericanChinese = class(TChinese,ISpeakChinese,ISpeakEndlish) public constructor create; function SayHello: string; end; implementation function TAmerican.SayHello: string; begin result := ‘Hello!‘; end; function TChinese.SayHello: string; begin result := ‘你好‘; end; function TAmericanChinese.create; begin name := ‘Tom Wang‘; end; function TChinese.create; begin skincolor := ‘yellow‘; end; function TAmericanChinese : string; var Dad:ISpeakChinese; Mum:ISpeakEndlish; begin Dad := TChinese.create; Mum := TAmerican.create; result := Dad.SayHello + Mum.SayHello; end; end. unit FormMain; interface uses Windows,SysUtils,Variants,Classes,Graphics,Fomrs,Dialogs,StdCtrls,Extctrls; type TForm1 = class(TForm) Button1: TButton; LabeledEdit1: TLabeledEdit; LabeledEdit2: TLabeledEdit; procedure ButtonClick(Sender: TObjct); private //... public //... end; var From1: TForm1; implementation uses uSayHello; procedure TForm1.Button1Click(Sender: TObjct) var Tom: TAmericanChinese; begin Tom := TAmerican.create; try LabeledEdit1.text := Tom.Name; LabeledEdit2.text := Tom.SkinColor; Showmessage(Tom.SayHello); finally Tom.Free; end; end; ?下面来比较一下这两种的写法: TAmericanChinese = class(TChinese,ISpeakEndlish) //A TAmericanChinese = class(TChinese,ISpeakEndlish) //B 其实A可以写成B这种形式,功能也是可以实现的. 那么,这两种写法是一个意思吗?不是的! 对于A形式:强调的是几口继承 对于B形式:侧重的是类继承 B形式如下图: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |