为什么接口在java中

时间:2012-08-22 10:34:24

标签: java

  

可能重复:
  Java Interfaces?

我不是最新的java,但有一件事我到目前为止还无法理解接口解决的目的究竟是什么?我知道为了使用java附加多重继承,可以使用它,但这不应该是灵魂原因。接口的大多数其他目标都可以由抽象类提供。即便是书籍也没有给出足够的答案。

5 个答案:

答案 0 :(得分:1)

接口不提供类的多重继承。虽然接口可以扩展多个其他接口。

界面类似于合同。例如,您是一类名为Human的对象。然后,你有多个函数与fufil,这些函数对于所有Human对象都不是通用的。比如你支付手机合同,为妻子做晚餐等。

接口只是告诉您对象要为您做什么。和Class一样定义它。

希望有所帮助。

答案 1 :(得分:1)

  

我知道为了用java附加多重继承   可以使用,但这不应该是灵魂的原因

为什么不能为您提供 多接口继承 并非真正重要的解决方案,您不解释。
除了非常重要的事实(这有助于Java不让C++中出现diamond problem) - 认为没什么大不了的还可以模拟对象之间的不同关系 abstract类将用于建模is-a关系。通过界面,您可以建模has-a关系,捕获组合,并且您还可以在类之间组合通用功能,否则这些功能将彼此无关。

答案 2 :(得分:0)

定义Type接口是最佳候选者。阅读4-Classes And Interfaces中的第Effective Java章。

答案 3 :(得分:0)

我将为您提供一个使用界面的小例子。

我的课程Company包含ArrayList<Employee> employees 和一个函数giveRaise(),通过增加工资来给员工加薪。

现在想象一下,我有三个班级EmployeeManagerSalesPerson,而不是Developer,他们都得到加薪,但每个班级都有所不同。

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

所以你需要做的就是每次你创建一个类(如开发人员编写一个新类),继承自Employee你想要强制它来实现函数giveRaise和定义它。

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

答案 4 :(得分:0)

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