04.Delphi通过接口IInterface实现多重继承
2024-09-03 20:51:09
IInterface表示申明了一些函数,自己本身没有实现部分,需要由继承它的类来实现函数
uSayHello代码如下
unit uSayHello; interface uses
SysUtils,
Windows,
Messages,
Classes,
Graphics,
Controls,
Forms,
Dialogs; type
// IInterface表示申明了一些函数,自己本身没有实现部分,需要由继承它的类来实现函数
ISpeakChinese = interface(IInterface)
function SayHello: string;
end; // IInterface表示申明了一些函数,自己本身没有实现部分,需要由继承它的类来实现函数
ISpeakEnglish = 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
// ISpeakChinese中定义的函数,序号在继承类中实现
function SayHello: string;
end; TAmerican = class(TMan, ISpeakEnglish)
private
// ISpeakChinese中定义的函数,序号在继承类中实现
function SayHello: string;
end; // 美籍华人 ,继承了人类,汉语和英语
TAmericanChinese = class(TMan, ISpeakChinese, ISpeakEnglish)
public
constructor create;
// ISpeakChinese中定义的函数,序号在继承类中实现
function SayHello: string;
end; implementation {
********************************** TAmerican ***********************************
}
function TAmerican.SayHello: string;
begin
result := 'Hello!';
end; {
*********************************** TChinese ***********************************
}
function TChinese.SayHello: string;
begin
result := '你好!';
end; {
******************************* TAmericanChinese *******************************
}
constructor TAmericanChinese.create;
begin
name := 'Tom Wang';
end; function TAmericanChinese.SayHello: string;
var
Dad: ISpeakChinese;
Mum: ISpeakEnglish;
begin
Dad := TChinese.create;
Mum := TAmerican.create;
// 调用说中文和说英文方法
result := Dad.SayHello + Mum.SayHello;
end; end.
界面代码如下
unit frmMain; interface uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls,
ExtCtrls; type
TForm1 = class(TForm)
Button1: TButton;
LabeledEdit1: TLabeledEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation uses
uSayHello; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
var
Tom: TAmericanChinese;
begin
// 创建美籍华人类
Tom := TAmericanChinese.Create;
try
LabeledEdit1.text := Tom.Name;
// 输出
ShowMessage(Tom.sayhello);
finally
Tom.Free;
end;
end; end.
最新文章
- SQL-truncate &;&; delete &;&; drop 的区别
- 【2016-10-13】【坚持学习】【Day4】【virtual 虚函数】
- PAT 1009. 说反话 (20) JAVA
- svg学习(六)line
- hdu 2528 Area
- [原创]java WEB学习笔记84:Hibernate学习之路-- -映射 一对一关系 ,基外键的方式实现
- 从原理上搞定编码-- Base64编码
- 3、Object对象的两大方法(hashCode-equals)总结
- 五分钟solr4.5教程(搭建、运行)
- zlib导致Ubuntu登录管理器失效
- Hive的MoveTask错误
- Spring2.5学习3.3_@Autowire注解实现手动装配
- 安装Windows2008操作系统 - 初学者系列 - 学习者系列文章
- 如何去掉Atom的右键菜单?
- vue :class的动态绑定
- JavaUtil_04_验证码生成器
- java输出各种学生成绩
- vue路由
- 没有基础的初学者学java怎样快速入门?超全的学习路线图
- 小程序for循环绑定每组数据的id,并通过id获取里面某个数组的值的方法