Java 中用于类定义和声明的单独文件

2022-09-04 20:12:57

我是一名C++程序员,目前正在学习Java,我想知道Java中的OOP是否遵循与C++相同的类定义和声明分离原则,即。将它们都放在单独的文件中。我在互联网上看了一下,包括Android开发人员网站,我遇到的所有代码都同时执行了定义和声明。

这仅仅是C++开发与Java开发之间的区别之一,还是我一直在研究的来源只是以这种方式做事,以限制其代码在互联网上发布的复杂性?我已经看到一些C++文档中的声明和定义组合在一起,尽管我知道这样做是不明智的做法。


答案 1

在C++中分离声明是有实际原因的,它允许单独编译源文件。Java中没有这样的需求(因为所有内容都是单独编译为字节码的),因此不允许这样做。


答案 2

下面的答案已根据评论进行了大量编辑。

您不需要纯粹为了编译器而将类拆分为定义和声明,因为Java中不需要前向声明(如C++)。由于设计要求,您可能希望将类定义和声明拆分为接口/类对(或 [抽象] 类/类对),例如:

  • 实现单个接口的多个类。
  • 远程过程调用,您不希望公开任何类依赖项(因为它们在客户端可能不可用)
  • 由其他类使用,但在测试时不需要/不希望其全部功能的类(例如,您可能希望在测试代码中模拟的数据库访问服务)

但是,这更类似于在C++中使用虚拟基类和具体实现类,通常称为“编程到接口”。您可以在本文中阅读有关该技术的更多信息(其中有一些论据说明为什么您可能更喜欢使用抽象类而不是接口作为基础)。此外,应仔细考虑这种分裂;在许多情况下,拆分类纯粹是过度的,会导致不必要的代码膨胀。

因此,简短的回答是:你不需要仅仅为了有前向声明而拆分类(原始问题会问),尽管如果有设计原因,你可能想这样做(但这并不等同于C++的头/类文件拆分)。