关于接口和接口类的使用,如何使用呢,直接使用接口的函数不就可以了吗,为什么还要封状成一个类呢(50分)

  • 主题发起人 主题发起人 coolbee
  • 开始时间 开始时间
C

coolbee

Unregistered / Unconfirmed
GUEST, unregistred user!
关于接口和接口类的使用,如何使用呢,直接使用接口的函数不就可以了吗,为什么还要封状成一个类呢

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }

end;

IMy = interface(IUnknown)
['{11D8E720-E667-447E-8018-C69B7977D0F7}']
function GetName:string;
end;

TMy = class(TInterfacedobject,IMy)
function GetName:string;virtual;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function GetName:string;
begin
Result:='张磊';
end;

function TMy.GetName:string;
begin
end;

procedure TForm1.Button1Click(Sender: TObject);
var
My:TMy;
begin
My:=TMy.Create;
showmessage(My.GetName);
My.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(GetName);
end;

end.
 
使用接口其实就是使用类,但接口隐藏了类的实现;我们只关心接口如何使用,而不关心
接口类的实现,所以我们使用接口而不使用类。
为什么要使用类?这个问题,大概是因为类实现了接口,而你正好需要一个接口的实例。
 
类关心的是实现,而接口关心的是定义。上面这段程序用接口跟用类的确差别不大,但是
在比较大的项目中,你可以尝试一下对接口编程而不是对实现编程的方法,相信你会发现
你的程序可复用性和灵活性都会大大增加。:)其实,这也是Delphi引入接口概念的主要
原因,即增强Object Pasal面向对象编程的能力。
 
考虑多语言之间的引用(主要是C/C++)
 
接口只有方法定义却没有具体实现的代码
所以你要将其封装在类里并实现其全部定义的方法代码。
 
呵呵,兄台,你的OOP概念还没深入哦:)。。。。加油!!!
 
procedure TForm1.Button1Click(Sender: TObject);
var
My:TMy;
begin
My:=TMy.Create;
showmessage(My.GetName);
My.Free;
end;

这样写没有问题
可是你为什么不这样写呢?
procedure TForm1.Button1Click(Sender: TObject);
var
My:IMy
//类改为接口
begin
My:=TMy.Create
//用类来实例化接口
showmessage(My.GetName);
My.Free;
end;
这样有什么不同呢??
呵呵~~ 很关键的噢!
我去一下wc~ 等我



 
我回来了~~~ :)
继续
如下
procedure TForm1.Button1Click(Sender: TObject);
var
My:IMy
//类改为接口
begin
My:=TMy.Create
//用类来实例化接口
showmessage(My.GetName);
My.Free;
end;

之所以改称借口,就是希望你以后操作的是接口 而不是对象。实际上当你操作接口的时候
关心的就是接口的函数声明,而具体是由哪个对象来实现接口的,将不再是你关心的。
所以 实现接口的class可以根据需要不断的改进,并且替换掉以前的class,而你操作接口的应用程序
这不需要任何改变 甚至不需要知道实现接口的对象究竟是谁



 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
583
import
I
I
回复
0
查看
628
import
I
后退
顶部