什么是接口?接口的目的是什么?请oop高手给出最易懂的描述! ( 积分: 5 )

  • 主题发起人 主题发起人 super-ljc
  • 开始时间 开始时间
S

super-ljc

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在学MASTING DELPHI 7 正在学接口可是总是不太明白现向高手请教有关接口的意义? 及我们平时编程什么时会用到接口! 为什么有用接口类不是很好吗? 什么时用接口?
 
最近在学MASTING DELPHI 7 正在学接口可是总是不太明白现向高手请教有关接口的意义? 及我们平时编程什么时会用到接口! 为什么有用接口类不是很好吗? 什么时用接口?
 
接口是实现COM的核心技术
 
接口定义就像一份合同,它规定了客户如何按照特写的顺序使用特定的方法。
例如:
unit Unit1;

interface

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

type
IJuCanSwim = interface(IUnknown)
['{199F1484-8738-4666-9862-020E593E83A2}']
function Swim(): string;
end;

TJuFish = class(TInterfacedObject, IJuCanSwim)
public
function Swim(): string
virtual;
end;

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

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TJuFish }

function TJuFish.Swim: string;
begin
Result := 'Yes. I can swim.';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Fish: TJuFish;
begin
Fish := TJuFish.Create();
try
Memo1.Lines.Add('TJuFish::');
Memo1.Lines.Add(Fish.Swim());
finally
Fish.Free();
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
CanSwim: IJuCanSwim;
begin
CanSwim := TJuFish.Create() as IJuCanSwim;
Memo1.Lines.Add('IJuCanSwim::');
Memo1.Lines.Add(CanSwim.Swim());
end;

end.
 
上面例子有点意思了不过还是不太明白!请大家无私奉献再给出语言上提示!
 
接口其实就是你和你的女朋友接吻的嘴型和动作,只要两个人的嘴型一致,动作一致,接吻一般会成功,当然,换了女朋友后,还是要求嘴型和动作跟你一致。
你和你的女朋友的嘴型和动作就是相当于接口。

够明白了吧!
 
楼主的5分是不是考虑一下啊
 
看看刘艺的《delphi面向对象编程思想〉他的接口讲的很好啊,我以前从来没接触过,但是一看就明白了。
 
只可意会, 不可言传.
实际上接口和一个纯抽象类除了VMT和一个类可以实现多个接口外就基本没区别了.在小的系统中使用接口也并没有什么好处, 但是在大的系统中, 接口可以带来N大的灵活性.
 
实际上接口 = 吻
 
哈哈^_^,上面讲的真是既有理论的又有通俗的,真是生动,佩服!佩服!我看应当够明白了楼主应当散分了!
 
en,刘艺的 delphi模式编程也不错,推荐
 
接口是个抽象的东西,也就是说他并不能真正存在(不能实例化),
类是描述具体事物(有属性、方法、如何操作的)的,但没有对应实体,
对象就是类所描述的各种属性方法,实例化后的东西,,是真正存在的东西(分配了内存,可以操作属性,调用方法)

用电脑来比喻,
接口好比USB总线标准、PCI总线标准、串口RS232标准等,它们只是个接口,
一个协议,用于各种不同对象之间交流的协议。
类好比声卡、网卡、主板、U盘等,这些是一些概念性的,并不代表实际存
在的物体,他们描述了一个物体应该有的属性、特点等。例如声卡定义了音频输出口、
Microphone等,并不是实际存在的物体,是对物体的描述。类是可以被继承的,
类的继承,好比声卡类派生出8位声卡类、16位声卡类。8位声卡类、16位声卡类除了
包括声卡类的属性方法外,还可以扩充自己的东西,这就是继承。

对象好比“小影霸V16声卡”,是实实在在的东西,他有声卡(类)所描述的所有
功能和特征,但它得特征值跟其他声卡不一样,例如它是小影霸公司出品的,他
长33cm。其他声卡也有其自身的特征值。

声卡、网卡都实现了PCI接口,因此所有这些卡都可以插在主板上,工作起来,
因此接口的作用就表现出来了。

使用接口的好处就是,可以更改类的结构,只要保持接口不变,软件仍然可以
正常运行,例如你可以换8为声卡类,也可以换16位声卡类,你的电脑一样可以发声,
你的网卡可以用10M网卡类,也可以是100M类,都可以让你的电脑联网。

没有接口会怎么样,就好比电脑的所有的卡都集成在一个主板上,难以更换,
难以修改,有可能为了修改一个小问题或增加新功能,需要重新设计主板。
软件也一样,没有定义好的接口,软件就不够稳健,也不好扩充新功能,
软件维护也不方便。没有接口,更难以搭建功能复杂的软件系统。
 
后退
顶部