Delphi中Interface接口的使用方法

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

//定义接口如果接口独立成一个文件,则在应用程序中和实现程序中都要引用该接口文件;

ICar = interface (IInterface)

[‘{ED52E264-6683-11D7-B847-001060806215}‘]

procedure drive;

end;

//接口实现类1,一定要加入TinterfacedObject才能使用;

TCar = class(TInterfacedObject,ICar)

public

procedure drive;

end;

//接口实现类2,一定要加入TinterfacedObject才能使用;

THouseCar = class(TInterfacedObject,ICar)

public

procedure drive;

end;

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

 { Public declarations }

function getCar:ICar; //此处可用别的方式来实现获取ICAR,如放在DLL文件中;

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

{ TCar }

procedure TCar.drive;

begin

ShowMessage(‘TCar.drive‘);

end;

{ THouseCar }

procedure THouseCar.drive;

begin

ShowMessage(‘THouseCar.drive‘);

end;

procedure TForm1.Button1Click(Sender: TObject);

var

s:ICar;

begin

s:= getCar;

s.drive;

end;

function TForm1.getCar:ICar;

begin

Result:=THouseCar.Create; //此处为整个实现的关键点;

//Result:=TCar.Create;

end;

end.

时间: 2025-01-06 09:42:45

Delphi中Interface接口的使用方法的相关文章

为什么Java中有些接口没有任何方法

由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的定义,没有方法的实现.接口中的所有方法都是抽象的.接口中成员的作用域修饰符都是public,接口中的常量值默认使用public static final修饰.由于一个类可以实现多个接口,因此通常可以采用实现多个接口的方式来间接的达到多重继承的目的. 在Java语言中,有些接口内部没有声明任何方法,也

Delphi中的接口和抽象类

参考:http://blog.csdn.net/xinzheng_wang/article/details/6058643 接口:Interface Delphi中接口中的关键字Interface,但是它和Pascal单元中的Interface没有任何联系 一.抽象类 Delphi中的抽象类只定义行为的类,它规定了由此派生的类必须具备的某些行为.但是抽象类不实现这些行为,而必须由其派生类去实现这些行为.所以它只是一种“抽象”的类,而且,我们无法为抽象类创建实例.比如这段代码 TCode = cl

golang中interface接口的深度解析

什么是interface,简单的说,interface是一组method的组合,下面这篇文章主要给大家深度解析了关于golang中的interface接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 一 接口介绍 如果说gorountine和channel是支撑起Go语言的并发模型的基石,让Go语言在如今集群化与多核化的时代成为一道亮丽的风景,那么接口是Go语言整个类型系列的基石,让Go语言在基础编程哲学的探索上达到前所

Delphi中文件流的使用方法

在Delphi中,所有流对象的基类为TStream类, 其中定义了所有流的共同属性和方法.TStream类中定义的属性介绍如下: 1.Size: 此属性以字节返回流中数据大小. 2.Position: 此属性控制流中存取指针的位置. Tstream中定义的虚方法有四个:1.Read:此方法实现将数据从流中读出.函数原形为:Function Read(var Buffer;Count:Longint):Longint;virtual;abstract;参数Buffer为数据读出时放置的缓冲区,Co

使对象具有ES6中Iterator接口的实现方法

es6中只有具有iterator接口的数组或者类数组(arguments)都可以使用for of来循环,但是对于对象来说不行,可以利用迭代器中的原理来给对象生成一个迭代器,实现让对象可以使用for of 1 var j={ 2 name:'小红', 3 age:18 4 } 5 //给j对象添加一个iterator接口 6 j[Symbol.iterator]=function(){ 7 //使用object.keys()方法把j对象中的k值读取出来存在数组当中 8 var arr=Object

Java集合中Map接口的使用方法

Map接口 Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value: Map中的键值对以Entry类型的对象实例形式存在: 建(key值)不可重复,value值可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值. Map支持泛型,形式如:Map<K,V> Map中使用put(K key,V value)方法添加 HashMap类 HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现

更新Delphi中SVN客户端版本的方法

Delphi从XE以后集成里SVN客户端, 安装完Delphi以后, 在bin\subversion下, 存放的就是SVN客户端文件, 可惜版本有点低(好像是1.7的) 如果想更新成高版本的客户端文件按下面的方法: 1.到collab的网站SVN下载页面: http://www.collab.net/downloads/subversion 下载要使用的SVN Client版本(不是EDGE的), 大概6M左右的那个 2.下载下来安装(默认安装路径: C:\Program Files\Colla

Delphi中TStringList类常用属性方法详解

//TStringList 常用方法与属性: var List: TStringList; i: Integer; begin List := TStringList.Create; List.Add('Strings1');           {添加} List.Add('Strings2'); List.Exchange(0,1);             {置换} List.Insert(0,'Strings3');      {插入} i := List.IndexOf('String

Delphi中创建对象的两种方法的比较(使用变量与直接创建)

比如创建一个线程有下面这样两种方式 begin TMyThread.Create; end; 和 var myTestThread: TMyThread; begin myTestThread:= MyThread.Create; end; 第一种方式就是创建了一个线程,这个线程去执行,但是你却没有这个线程对象的指针,所以你不能去控制它,只能任由它去执行,如果能自己结束还好,但是如果是一个循环执行的线程,那么就可能在那里永远执行下去,因为你在创建它的时候,没有记录这个线程对象的指针,所以你就没办