I'm not sure I “get” Interfaces
好的,我理解接口的基本概念,但我不一定知道我"得到"了它的用途。
我现在正在家里用抽象工厂设计模式编写一个应用程序。主要是为了练习,但我的最终目标是销售应用程序(但这不是为了这个网站)。
无论如何,我用作参考的书在示例中使用了一个接口。
维基百科解释说,"接口用于编码各种类型的类共享的相似性,但不一定构成类关系。"
所以这基本上告诉我,接口是用来确保类之间的相似性的。
因此,如果我有一个名为Guitar的接口,我可以有一个名为GuitarAbstract的抽象类,以及其他名为BassGuitar、AcousticGuitar、ElectricGuitar的类,以及所有的继承和实现等。
我在智力上理解接口的需求和用法。这就像是额外的、冗余的代码。
我是不是错过了什么?
- "程序到接口"可能是什么意思的重复?
- Java中接口的可能复制——它们是为了什么?
- 据记录,我认为"太宽泛"绝对是错误的接近原因。
- 在不支持多重继承的语言(如Java)中,接口可以用来填补这一空白。
- 他们是一种妥协。C++和其他OO语言具有多重继承性,这是强大的,但也带来了一些问题。接口允许多重继承的某些方面,而不存在许多陷阱。
- @ MJR作为示例,查看所有不同的Java EDCOX1 0和EDCX1 1实现。
- 重复问题是更正确的接近原因。
- 似乎您还不了解接口。
接口允许您编写代码,只要它实现了所需的接口,它就可以与任何类型的类一起工作。这使得代码可以很容易地重用,减少了工作。接口不是冗余的。
迭代器就是一个很好的例子。您不关心迭代器代表什么数据结构,只想检索数据。
这是接口的目的。
接口不是附加代码,它就像一个契约。它定义了必须提供的功能,并将实现细节留给类。这是我真正的组织工作的核心。
- 这意味着不需要类继承,您可以用接口做任何事情。这显然是疯狂的。整个事实需要反映为什么这些方法是抽象的,但是在类继承中它们不是。
- 类继承重写现有的实现行为。在许多情况下,您可能能够完全覆盖它。在这种情况下,接口更好,因为您不需要有基本实现。而且您不需要依赖于接口。
- 你认为这与避免多重继承相关问题的妥协毫无关系,同时又能保持许多好处?
- @马特贝利:这可能与你的观点有10%的关系,与德沃罗斯的建议有90%的关系。
- 在过去的十年里,我从来没有感觉到需要使用多重继承,但是如果没有接口的概念,我将面临一个制造真正的OO代码的巨大问题。:)事实上,我一直觉得多重继承会导致一些问题,而这些问题正是不使用它的原因。
- 只考虑继承。您有一个基类,它实现了一个从文件中读取数据的已定义集。现在,您希望通过一个套接字来检索相同的数据。您可以重写基类,并且很可能90%的"基类"都是无用武之地,因为您必须从头开始实现其他所有内容。但是您仍然依赖于所有涉及的代码,即使您不需要它。通过一个接口,您只需实现新的类而不需要任何开销。在有意义的地方使用继承,在有意义的地方使用接口。它们有不同的用途,即使它们看起来是重叠的。