为什么Java接口

问题描述:

可能重复:
Java Interfaces?为什么Java接口

我不是最新的java的,但有一点是它,我无法理解,直到日期那究竟是什么接口解决的目的是什么?我知道为了附加Java的多重继承可以使用,但这不应该是灵魂原因。接口的大部分其他目标都可以由抽象类来服务。即使这些书也没有给出足够的答案。

+0

在[Java教程 - 接口](http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html)中有一个很好的解释。 – Keppil

+1

这么多类似的问题,我不知道哪一个是最相似的。 –

定义Type接口是最好的选择。请从Effective Java中阅读章节4-Classes And Interfaces

接口不提供对类的多重继承。尽管接口可以扩展多个其他接口。

接口类似于合同。例如,你是一类名为Human的对象。然后你有多个契约来进行fufil,这对于所有人类对象来说都不是通用的。比如你支付你的手机​​合同,为妻子做晚餐等等。

接口只是告诉你这个对象是什么契约为你做的。像Class一样定义它。

希望有所帮助。

我给你一个使用界面的小例子。

我有一个包含一个ArrayList<Employee> employees 和功能giveRaise(),通过增加他们的工资给加薪给员工一类Company

现在想象一下,而不是Employee,我有三个类ManagerSalesPersonDeveloper
他们都得到了提高,但每个人是不同的。

您认为您可以创建一个名为Employee的超类,但您不想使用相同的方法giveRaise(),并且您不希望对giveRaise()具有默认处理方式。

所以,你需要做的是,从Employee继承每次你创建一个类(如开发人员编写一个新的类)要迫使它来实现该功能giveRaise和定义它。

这是接口方便的地方。当然你可以使用抽象类。但带有一个接口,你仍然可以从另一个类继承。

由于它是generell中接口的最大优势,因此可以更自主地开发程序的某些部分,因为通过接口你需要实现某种契约,以及你可以依赖的东西将在那里供您使用(在程序的其他部分)。

+0

对不起这个相当多余的答案,由于我的互联网连接不好,我没有得到通知,另一个答案已发布... – nurgan

我知道,为了多重继承与Java将其固定 可以使用,但不应该是灵魂的原因

为什么不是事实,你可以有多接口继承对你来说不是一个真正重要的解决方案,你不解释。
除此之外真正重要的事实(有助于Java的不要在C++diamond problem存在) - 这认为是没有什么大deal-还机型不同类型的对象之间的关系。
abstract类将用于模拟is-a关系。通过界面,您可以建立一个has-a关系捕获组合,并且您还可以将类别之间的通用功能组合起来,否则这些功能会彼此不相关。