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形式如下图:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。