可能重复:
C++ promotes a separation between class definitions and class implementations but not JAVA
我想知道为什么JAVA在C ++中没有这样做,并促进了类定义和类实现之间的分离。对于可扩展性的代码重用方式,这种工作方式或程序是否有任何优势?
答案 0 :(得分:7)
Java确实能够将类型定义与其实现分开。使用接口来定义类型和实现该实现的接口的类。
答案 1 :(得分:5)
Java支持单独定义interfaces和类。
答案 2 :(得分:3)
Java中的定义和实现之间可以有相同的分离。我们通过界面驱动设计在开发工作中始终如一地完成这项工作。我们将整个系统设计为一组表示系统行为和功能的接口。定义接口后,我们创建实现类,实现接口定义的行为。
这使我们能够通过接口引用我们的组件,并且可以灵活地替换特定的实现,而无需修改整个代码库中的引用。
关于这种设计方法的一个警告是需要进行依赖注入以维持类型之间的分离。依赖注入可以手动完成,或者像大多数人一样,使用DI框架(如Spring中包含的框架)完成。
答案 3 :(得分:3)
Java的创建者鼓励按界面编码(称为合同设计)。接口在某种程度上类似于C ++中的抽象类,具有以下实现:所有声明的方法都是抽象的和公共的,不允许类变量,常量必须是公共的。