界面本质上是额外的抽象层?

时间:2010-08-10 15:25:22

标签: flex structure

  

可能重复:
  Interfaces (interface/abstract class) are not abstractions?

我对界面的了解非常有限。

我正在努力更好地理解它们。他们究竟服务的目的是什么,何时使用它们是明智的?

由于

3 个答案:

答案 0 :(得分:0)

您提出的问题填补了大多数OO教科书的多个章节。我认为回答这类问题的最佳方法是提供资源,所以:

http://en.wikipedia.org/wiki/Interface_(Java)

http://livedocs.adobe.com/flex/3/html/help.html?content=04_OO_Programming_10.html#135768

或者你喜欢的OO编程书。

简而言之,实现接口有点像扩展一个类,除了接口没有实现你固有的方法,你的类必须自己做。此外,您可以实现多个接口。例如,我可以创建一个抽象类Animal,然后创建Flyable和Quackable接口。现在,Bat类扩展了Animal并实现了Flyable。 Duck类扩展了Animal并实现了Flyable和Quackable。类DuckCall还可以扩展Quackable等。您也可以根据接口将对象传递给方法。

答案 1 :(得分:0)

我看到它的方式,接口的使用方式与电连接器类似:它们定义了进出设备的信号,因此您无需关心插入的是什么,只要它尊重这些规则。

例如,拿一个MP3播放器和它的耳机插孔。构建您的MP3播放器的工程师不必关心您将使用哪种耳机,这是可能的,因为插孔接口。 他们针对该界面对您的播放器进行编程,然后只要具有合适尺寸的插孔,任何类型的耳机都可以工作。他们甚至可以是扬声器,它们仍然可以工作(不是很酷吗?)。

此外,没有人禁止您插入插孔中的其他东西,只要它有一个插头(它实现了接口)。您可以随意以任何方式解释信号,例如,您可以构建一个改变颜色而不是播放音乐的设备。

OOP接口以类似的方式工作:如果您需要为作为方法参数传递的对象的接口,调用者可以向您发送该接口的任何实现,并且发送的对象可以解释调用他们自己的方式。

答案 2 :(得分:0)

至少在PHP中,它们基本上只是一种对对象设置一些限制的方法,使多态性更易于管理 - 也就是说确保不同类型的对象都可以像鸭子一样走路。

换句话说 - 只是一种以编程方式确保对象具有某些成员和方法的方法,如果不这样做则会抛出错误。