【问题标题】:Description of what an interface does? [duplicate]描述接口的作用? [复制]
【发布时间】:2008-12-26 21:00:41
【问题描述】:

关于 OOP,您如何描述接口?

我的意思是,子类化可以描述为“Has-A”,而继承可以描述为“Is-A”。成员方法可以是“Can-Do”。

有没有什么方法可以扩展(不是双关语)来描述接口的作用?

【问题讨论】:

  • 组合可以描述为“has-a”,而不是子类化...

标签: oop interface


【解决方案1】:

我将对象视为名词,将方法视为动词,将接口视为形容词(当然,这个类比过于简单,但经常有效很好)。

示例:接口Serializable 的作用类似于形容词,因为它将某些特性应用于实现该接口的对象,但不会改变该对象的性质。我们可以说,“这是一个可序列化的对象”。但我们不会说“这个对象是一个可序列化的”,我们也不会说“这个对象有一个可序列化的”。

我也喜欢 Federico 的 answer 接口是“CAN-DO”。

接口是类支持的一组相关操作。接口中的方法一起描述了类可以做什么。

就像一个名词可以带多个形容词一样,一个类可以实现多个接口,只要它们不冲突。一个类实现的所有接口的联合就是这个类可以做什么的总和。

实际上,接口是一组方法签名,没有实现这些方法的代码。只是方法名称和参数。根据语言的不同,方法签名还可能包括返回类型和抛出的异常。

接口由方法组成,但不包含数据成员。

顺便说一句,我不会说子分类是 HAS-A。我的理解是子类化和继承是一样的,所以这些都是IS-A。而 HAS-A 称为聚合或组合。

  • 组合是一个对象拥有另一个对象的地方。破坏外部对象也会破坏内部对象。示例:大学组成部门。关闭大学,部门就消失了。

  • 聚合是一个对象包含另一个对象但不拥有它的地方。破坏外部对象不会破坏内部对象。示例:大学雇用教授,但关闭大学并不会杀死教授。

【讨论】:

    【解决方案2】:

    接口是具有所有纯虚拟成员的抽象基类。

    所以看看你的 Has-A/Is-A,它应该类似于你申请抽象基类的任何东西。

    接口通常存在于不完全支持多重继承的语言中,以此来更安全地提供一些相同的好处。

    【讨论】:

      【解决方案3】:

      代理行动。

      【讨论】:

        【解决方案4】:

        正如您对方法的描述,我也将接口描述为“Can-Do”。接口是一个契约,就像“所有实现我的类,都可以做这些事情”。

        【讨论】:

          【解决方案5】:

          Joel 并不完全了解接口是什么。它在某种程度上就像一个抽象基类,但它没有方法和属性的实现。

          这几乎概括了接口是什么。

          http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_interrfaces03052006095933AM/csharp_interrfaces.aspx?ArticleID=cd6a6952-530a-4250-a6d7-54717ef3b345

          【讨论】:

          • 因此是“所有纯虚拟成员”部分。
          猜你喜欢
          • 2016-03-24
          • 2016-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-27
          • 1970-01-01
          • 2015-03-17
          • 1970-01-01
          相关资源
          最近更新 更多