为什么Java不促进类定义和类实现之间的分离

为什么Java不促进类定义和类实现之间的分离,java,Java,可能重复: 我想知道为什么java不喜欢C++,并促进类定义和类实现之间的分离。这种工作或处理扩展性代码重用的方法有什么好处吗 移动到Java确实提供了将类型定义与其实现分离的能力。使用接口为实现定义类型和实现该接口的类。Java支持单独定义和类。您可以在Java中对定义和实现进行相同的分离。在我们的开发工作中,我们一直通过界面驱动设计来实现这一点。我们将整个系统设计为一组表示系统中行为和功能的接口。一旦定义了接口,我们就创建实现类来实现接口定义的行为 这使我们能够通过接口引用我们的组件,并且

可能重复:

我想知道为什么java不喜欢C++,并促进类定义和类实现之间的分离。这种工作或处理扩展性代码重用的方法有什么好处吗


移动到

Java确实提供了将类型定义与其实现分离的能力。使用接口为实现定义类型和实现该接口的类。

Java支持单独定义和类。

您可以在Java中对定义和实现进行相同的分离。在我们的开发工作中,我们一直通过界面驱动设计来实现这一点。我们将整个系统设计为一组表示系统中行为和功能的接口。一旦定义了接口,我们就创建实现类来实现接口定义的行为

这使我们能够通过接口引用我们的组件,并且能够灵活地替换特定的实现,而无需修改整个代码库中的引用


关于这种设计方法的一个警告是需要进行依赖项注入以保持类型之间的分离。依赖项注入可以手动完成,也可以像大多数人那样使用DI框架(如Spring中包含的框架)完成。

Java的创建者鼓励通过称为契约式设计的接口进行编码。一个接口与C++中的抽象类有某种相似之处,下面的强制:所有声明的方法都是抽象的和公共的,不允许有类变量,常量必须是公共的。这只是一个意见的问题——也许你的问题应该按照这样的思路重新表述:有人能给我引述詹姆斯·戈斯林的一句话,说明他为什么不为Java做这件事吗?。目前,它可能被认为是flamebait…嗯,您可以使用接口和类。任何没有进入接口的东西都将是一个实现细节。这与前面的问题相同,因为它应该被移到程序员的交换中,所以这个问题被关闭了。