实际示例中需要Java接口的地方?

时间:2018-08-10 10:16:52

标签: java interface

我一直在寻找答案,所以很抱歉,如果已经回答了。

对于在Java中为什么从接口继承空方法存根为什么这么有用我感到困惑?这是主要用于我需要尝试理解的较大项目的东西吗?因为尽管我知道接口的所有语法和特性,但是在编程时找不到它们的用途。我已经尽力阅读了很多东西,但这是一个我无法“点击”脑子的概念,我觉得它阻碍了我。

也许这只是一个好的软件设计案例,无论我是否需要,我都需要在某些情况下使用它们?

如果有人可以将我引向某些代码的方向,或者最好是让我做一个在接口必不可少的项目,那将不胜感激。

3 个答案:

答案 0 :(得分:2)

“必要”是一个主观术语。

更多的是,在某些情况下,具体的类并不是天生的有用。

假设您编写的方法带有一个ArrayList参数:如果要向其传递一个LinkedList,则需要复制该方法,更改参数类型。

但是除非该方法的实现真正需要 专门是ArrayList(*),否则您可以将该参数更改为List接口,并接受任何实现。


(*)由于getset方法(分别为常数和线性)方法在时间复杂度上的差异,排序算法实际上确实关心ArrayList和LinkedList。但是即使在这里,也不需要ArrayList:您只需要任何具有恒定时间复杂度实现的List。这通常由实现RandomAccess标记接口的具体类指示。

答案 1 :(得分:1)

有必要吗?他们从来没有。大量的语言没有这个概念,但是它们仍然有效。接口仅在正确使用时才有用,而不必要。

  

我对为什么要从一个继承空方法存根感到困惑   接口在Java中被认为是如此有用吗?

不是。但是,您仅描述已确定的接口的一种效果。

用代码块编写“ try”和“ catch”之类的单词也没有用。有用的是具有异常引发和从异常中恢复的概念。

  

主要用于大型项目吗?

是的,尽管一经理解,它对几乎所有五个文件以上的项目都比较好。

  

我需要尝试理解吗?

无需着急,它会在自己的时间里带来经验。

  

也许这只是良好软件设计的案例,我需要使用   在某些情况下我是否需要他们?

这是一个好的软件设计问题,是的。尽管我认为这是一个门槛,但它们是更好的解决方案,因此任何专业人员都将其称为需求。

答案 2 :(得分:0)

您应该使用哪个抽象类或接口?您可以在Java文档中找到答案:

https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html