关于oop:接口的功能描述?

Description of what an Interface does?

本问题已经有最佳答案,请猛点这里访问。

复制:接口:为什么我不能抓住它们?

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

我的意思是,子类可以被描述为"has-a",继承可以被描述为"is-a"。成员方法可以是"can do"…

是否有任何方法可以扩展(没有双关语)来描述接口的功能?

谢谢


我认为物体是名词,方法是动词,接口是形容词(当然这个类比过于简单化了,但经常工作得很好)。

示例:接口Serializable的工作方式与形容词类似,因为它对实现该接口的对象应用了一些特性,但不会更改该对象的内容。我们可以说,"这是一个可序列化的对象。"但是我们不说"这个对象是可序列化的",也不说"这个对象有一个可序列化的"。

我也喜欢费德里科的回答,即界面是"可以做的"。

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

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

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

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

顺便说一句,我不会说子类是has-a。我的理解是子类和继承是一样的,所以它们都是is-a。而has-a被称为聚合或组合。

  • 组合是一个对象拥有另一个对象的地方。销毁外部对象也会销毁内部对象。例如:大学由系组成。关闭大学,各系就消失了。

  • 聚合是指一个对象包含另一个对象,但不拥有它。销毁外部对象不会销毁内部对象。大学聘用教授,但关闭大学并不会杀死教授。


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

所以看看你的has-a/is-a,它应该类似于你将要应用于抽象基类的任何东西。

接口通常存在于不完全支持多重继承的语言中,作为一种更安全地提供某些相同好处的方法。


正如您对方法的描述一样,我也将接口描述为"可以做"。接口是一个类似"所有实现我的类都可以做这些事情"的契约。


ACTS- AS-A


乔尔,这不像是一个界面。它在某种程度上类似于抽象基类,但它没有方法和属性的实现。

这很好地概括了接口是什么。

http://www.c-sharpcorner.com/uploadfile/rmcochran/csharp_interrfaces03052006095933am/csharp_interrfaces.aspx?物品ID=CD6A6952-530A-4250-A6D7-54717EF3B345