【问题标题】:why interface used in java [duplicate]为什么在java中使用接口[重复]
【发布时间】:2012-08-03 10:05:45
【问题描述】:

可能重复:
why we need interface in java?

我参考了以下链接

prevoius post

谁能解释为什么我们在 java 中使用接口?

除了

  • 接口可以实现多重继承。
  • 多态性

【问题讨论】:

    标签: java oop inheritance


    【解决方案1】:

    除了您提到的之外,接口是公开一组函数 (API) 的好方法,而不会泄露有关其实现的任何信息。

    根据定义,当一个类implementsInterface 时,它同意实现一系列方法。这将允许任何调用者使用这些方法,而无需:

    • 调用者不得不担心函数是如何实现的;
    • 写函数的人担心会暴露内部逻辑。

    【讨论】:

      【解决方案2】:

      除了所有其他帖子之外,接口更多的是abstract,其中Interfacesclass 和外部世界之间形成合同,并且该合同在构建时由@执行987654324@。如果您的class 声称实现了interface,则由该interface 定义的所有methods 必须出现在其源代码中,然后class 才能成功compile

      【讨论】:

        【解决方案3】:

        接口将对象提供的功能与其实现分开。

        您可以提供对接口的引用,而无需知道实际使用的是哪个实现。

        接口还使测试更容易,因为您可以创建虚拟实现来测试您的代码。像 EasyMock 和 JMock 这样的库使这更容易做到。

        【讨论】:

        • 并且您可以针对接口编译代码,因此实现甚至不必存在。
        • 如果您使用的是模拟库或Proxy,它根本不必存在。 ;)
        • 就像 USB 是一个接口一样,只要它实现了 USB 接口,没有人需要关心设备实际做了什么。它可以只使用 USB 进行充电或传输数据。作为消费者,您并不关心这些设备实际上做了什么,只要它们实现了 USB 接口,因此不会损坏您的计算机。
        • 我认为你有一个错字:应该没有。
        • 我认为最重要的事情(关于 C++)是通过分离类扩展和接口实现的概念,从定义上避免了多重继承,最终避免了软件质量(见我的回答)
        【解决方案4】:

        当一个类实现/实现多个接口时,它不是多重继承。继承/扩展关系实际上只存在于相同类型的构造之间(一个接口可以扩展另一个接口或一个类另一个类)。类和接口之间的关系是实现或实现,而不是扩展。 这种区分确实避免了多重继承(在Java中一个类最多可以扩展一个类),从而避免了许多问题(即钻石问题http://en.wikipedia.org/wiki/Diamond_problem等)最终提高了设计质量

        【讨论】:

          【解决方案5】:

          有一件事,还没有提到:您可以使用多个带有接口的设计模式来设计您的程序(定义 API)。这将在稍后帮助您实现大型软件实现。 也许你想读一些关于它的东西:http://en.wikipedia.org/wiki/Software_design_pattern

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-10-19
            • 1970-01-01
            • 2010-12-01
            • 2012-12-26
            • 2011-06-21
            • 2012-11-06
            • 2014-05-18
            相关资源
            最近更新 更多