Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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_Class_Interface_Client_Implementation - Fatal编程技术网

java:为什么实现代码没有显示给客户端

java:为什么实现代码没有显示给客户端,java,class,interface,client,implementation,Java,Class,Interface,Client,Implementation,假设我有一个接口类和一个单独的实现类。接口类显示给客户端,但不是实现类的源代码。为什么会这样?我知道一个原因是因为封装。还有其他原因吗?除了您提到的封装之外,还有一部分原因是,当客户机开发到接口而不是类时,可以保证他们可以像编写合同一样编写接口代码 这里的好处是它使代码更加模块化,甚至可以促进软件类和组件之间更松散的耦合。无论我是否有接口的正确实现,我都可以在单元测试中模拟接口的预期行为,以便单元测试能够在给定接口实现的隔离中验证和验证我的客户机代码 这是一个强大的功能,因为它允许开发人员更有效

假设我有一个接口类和一个单独的实现类。接口类显示给客户端,但不是实现类的源代码。为什么会这样?我知道一个原因是因为封装。还有其他原因吗?

除了您提到的封装之外,还有一部分原因是,当客户机开发到接口而不是类时,可以保证他们可以像编写合同一样编写接口代码

这里的好处是它使代码更加模块化,甚至可以促进软件类和组件之间更松散的耦合。无论我是否有接口的正确实现,我都可以在单元测试中模拟接口的预期行为,以便单元测试能够在给定接口实现的隔离中验证和验证我的客户机代码


这是一个强大的功能,因为它允许开发人员更有效地对代码进行单元测试。它还允许开发人员更轻松地并行工作。客户机开发人员可以编写接口代码并对其进行单元测试,而另一个开发人员则编写实现接口的类的实现代码。实现开发人员同样可以独立地对其类进行单元测试。

正如他所说,该接口可以看作是一个契约。实现接口的类必须满足契约。此外,使用接口时的松耦合非常有用,因为您可以在以后更改实现,而无需更改调用方本身的代码(例如,实现类的新名称)。