【问题标题】:Why do I need interface when I can implement full class? [duplicate]当我可以实现完整的类时,为什么我需要接口? [复制]
【发布时间】:2013-09-06 00:30:31
【问题描述】:

我试图了解interface 的用法并阅读this article 上面写着:

接口定义了一组标准化的命令,一个类将 服从。

命令是类实现的一组方法。

接口定义说明了方法的名称及其 返回类型和参数签名。没有可执行的主体 留给实现该接口的每个类的任何方法。

我想问为什么我需要在interface 中声明方法的名称及其返回类型和参数签名,而我可以直接在class 中实现它们?

【问题讨论】:

  • 这样你就不会在没有一个实现的情况下结婚,只有一个合同
  • 开始here,你可能会登陆here。投票结束。

标签: java class oop


【解决方案1】:

以最简单的方式,我会说主要用途是多态性,即对多个不同对象执行相同操作的能力。

来自here:-

接口是合约(或协议,或共识) 类可以做什么。当一个类实现某个 接口,它承诺为所有抽象提供实现 接口中声明的方法。接口定义了一组常用的 行为。实现接口的类同意这些 行为并为这些行为提供自己的实现。这 允许您在界面上编程,而不是在实际 执行。接口的主要用途之一是提供一个 两个对象之间的通信契约。如果你知道一门课 实现了一个接口,那么你就知道这个类包含了具体的 该接口中声明的方法的实现,并且您是 保证能够安全地调用这些方法。换一种说法, 两个对象可以根据定义的契约进行通信 接口,而不是它们的具体实现。

其次,Java 不支持多重继承(而 C++ 做)。多重继承允许您从更多 而不是一个直接的超类。如果两个直接 超类有冲突的实现。 (跟随哪一个 子类?)。但是,多重继承确实有它的位置。 Java 通过允许您“实现”多个 接口(但您只能从单个超类“扩展”)。 由于接口只包含抽象方法,没有实际的 实现时,多个接口之间不会发生冲突。 (接口可以保存常量但不推荐。如果是子类 实现了两个具有冲突常量的接口,编译器 将标记出编译错误。)

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2013-02-15
    相关资源
    最近更新 更多