Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么要使用java接口_Java - Fatal编程技术网

为什么要使用java接口

为什么要使用java接口,java,Java,可能重复: 我不是最新接触java的人,但有一件事我至今还不明白,接口到底解决了什么目的?我知道,为了用java附加多重继承,可以使用它,但这不应该是灵魂原因。接口的大多数其他目标都可以由抽象类实现。即使是书也没有给出充分的答案 定义类型接口是最佳选择。阅读effectivejava中的4-类和接口的章节。尽管接口可以扩展多个其他接口 接口类似于合同。例如,您是一个名为Human的对象类。然后,您与fufil签订了多个契约,这些契约不是所有人类对象的通用契约。比如你支付你的手机合同,为妻子做晚

可能重复:


我不是最新接触java的人,但有一件事我至今还不明白,接口到底解决了什么目的?我知道,为了用java附加多重继承,可以使用它,但这不应该是灵魂原因。接口的大多数其他目标都可以由抽象类实现。即使是书也没有给出充分的答案

定义
类型
接口是最佳选择。阅读
effectivejava

中的
4-类和接口的章节
。尽管接口可以扩展多个其他接口

接口类似于合同。例如,您是一个名为Human的对象类。然后,您与fufil签订了多个契约,这些契约不是所有人类对象的通用契约。比如你支付你的手机合同,为妻子做晚餐等等

接口只是告诉您该对象将为您做什么。其中类定义了它


希望对您有所帮助。

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

我有一个类
Company
,它包含一个
数组列表employees
还有一个函数
giveRaise()
,通过增加员工的工资来给他们加薪

现在想象一下,我有三个职业,而不是员工,
经理
销售人员
开发人员

他们都得到了加薪,但每一个都不同

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

因此,您需要做的是每次创建一个从
Employee
继承的类(如开发人员编写的新类)时,您希望强制它实现函数giveRaise并定义它


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

因为它是generell中接口的最大优势,所以您可以开发一个程序的更自主的部分,因为在一个接口上,您有某种契约需要实现什么,以及依赖什么,它将在那里供您使用(在课程的其他部分)

我知道为了用java附加多重继承 可以用,但那不应该是灵魂的理由

为什么您可以拥有多接口继承性这一事实对您来说不是一个真正重要的解决方案,您没有解释。
除了这个“强”>非常重要的事实(这有助于java在代码< C++ +代码>中没有出现)——你认为这没什么大不了的——它也可以在你的对象之间建立一种不同的关系。
抽象
类将用于建模
is-a
关系。通过该接口,您可以建模a
具有一个
关系捕获组合,此外,您还可以在类之间组合其他互不相关的通用功能。

在.S中有一个很好的解释o许多相似的问题,我不知道哪一个是最相似的。很抱歉,这个相当多余的答案,由于我的坏互联网连接,我没有得到通知,另一个答案已经张贴。。。