Oop 接口-仍在尝试理解它们

Oop 接口-仍在尝试理解它们,oop,language-agnostic,interface,Oop,Language Agnostic,Interface,我认为接口有3个主要优点,这是对的 必须创建的蓝图(我也听到其他人将其称为合同) 多态性 与继承(IMO有许多相似之处)不同,您可以有许多接口 还有其他加分或减分吗?有人不同意我的3分吗 对于类来说,“蓝图”比喻比对于接口更有效,但是“契约”比喻非常准确。接口指定了其他类在公共方法方面的期望,而不涉及底层实现。在类之间的继承往往由is-a关系组成的地方,接口可以被认为是作为一种关系,尽管我不认为后一个术语是常用的。对于类来说,“蓝图”隐喻比对于接口更有效,但是“契约”隐喻非常准确。接口指定了其他

我认为接口有3个主要优点,这是对的

  • 必须创建的蓝图(我也听到其他人将其称为合同)
  • 多态性
  • 与继承(IMO有许多相似之处)不同,您可以有许多接口

  • 还有其他加分或减分吗?有人不同意我的3分吗

    对于类来说,“蓝图”比喻比对于接口更有效,但是“契约”比喻非常准确。接口指定了其他类在公共方法方面的期望,而不涉及底层实现。在类之间的继承往往由is-a关系组成的地方,接口可以被认为是作为一种关系,尽管我不认为后一个术语是常用的。

    对于类来说,“蓝图”隐喻比对于接口更有效,但是“契约”隐喻非常准确。接口指定了其他类在公共方法方面的期望,而不涉及底层实现。当类之间的继承往往由is-a关系组成时,接口可以被视为works-as-a关系,尽管我不认为后一个术语常用。

    我要补充的是,接口的使用在某种程度上有助于创建自文档化代码。例如,类实现的接口描述了类支持的功能。因此,最终的代码如下所示:

    if (someClass is ISearchable)
    {
       someClass.Search();
    }
    

    我想补充一点,使用接口在某种程度上可以创建自文档代码。例如,类实现的接口描述了类支持的功能。因此,最终的代码如下所示:

    if (someClass is ISearchable)
    {
       someClass.Search();
    }
    

    具有相同接口的两个对象不需要以其他方式关联

    所以你本来可以 -花 -卡车 -恐龙

    都有相同的接口 -颜色


    即使它们是完全不同的对象。

    具有相同接口的两个对象不需要在其他方面相互关联

    所以你本来可以 -花 -卡车 -恐龙

    都有相同的接口 -颜色


    尽管它们是完全不同的对象。

    虽然C语言等语言只支持单个类(但多个接口)的继承——像C++这样的语言支持多重继承…另一个好处是它使得在单继承语言中不可能的事物成为可能。例如,在Java中,可以有一个实现多个接口的类。但是不能有一个具有多个基类的类。(你可以说这是多态性的一部分。)接口也被称为“没有实现的规范”或“抽象类型”(=blueprint)。@RobbieDee-当然-你猜到我来自C吗?:)虽然C语言的语言只支持单个类(但多个接口)的继承——像C++这样的语言支持多重继承……另一个好处是,它可能使得在单继承语言中不可能的事物成为可能。例如,在Java中,可以有一个实现多个接口的类。但是不能有一个具有多个基类的类。(你可以说这是多态性的一部分。)接口也被称为“没有实现的规范”或“抽象类型”(=blueprint)。@RobbieDee-当然-你猜到我来自C吗?:)和的可能副本。