【发布时间】:2014-05-18 02:53:20
【问题描述】:
能否请您提供接口的最佳用途,因为进一步完整阅读我没有找到任何证明我们为什么使用接口的东西。
我已阅读有关接口的所有内容,但找不到使用接口的解决方案。请举例说明。
【问题讨论】:
-
@Tech4Way 为什么不一样?
-
你没有?停止寻找接口的最佳使用,开始寻找继承的最坏使用
能否请您提供接口的最佳用途,因为进一步完整阅读我没有找到任何证明我们为什么使用接口的东西。
我已阅读有关接口的所有内容,但找不到使用接口的解决方案。请举例说明。
【问题讨论】:
接口的原理很简单:它是一个契约。
接口已记录在案;接口的方法只做一件事并做好,由实现来确保合同得到履行。
例如,让我们采用一个简单的界面,Iterator。你有Collections.emptyIterator(),它实现了这个接口。对于任何 X 类,您都可以声明:
final Iterator<X> iterator = Collections.emptyIterator();
保证此特定实现将正确实现next()、.hasNext() 和.remove() 方法。
同样,如果您有 List<X> 并且您这样做了:
final Iterator<X> iterator = list.iterator();
保证你是一样的。
通过接口访问允许您告诉用户这是他们应该为您的这种特定方法使用的合同。实现无关紧要,这是关键。
【讨论】: