模块(Module)、包(Package)、类(Class)

在 Java 中,有几个相关但不同的概念,包括包(Package)、模块(Module)、类(Class)。
下图为IDEA的项目结构介绍
模块(Module)、包(Package)、类(Class)_第1张图片
在 Java 9 模块系统中,有以下基本概念:模块(Module)、包(Package)、类(Class)。

  1. 模块(Module):

    • 模块是一种组织和封装代码的方式,引入了 module-info.java 文件来定义模块。
    • 模块具有唯一的标识符,称为模块名称,类似于包名的作用,用于在项目中标识和引用模块。
    • 模块定义了对其他模块的依赖关系、导出的包和对外提供的服务。
  2. 包(Package):

    • 包是一种组织类和接口的方式,用于将相关的类和接口组织在一起。
    • 包通常用于在代码中建立命名空间,以避免类名冲突。
    • 在模块内,包仍然是组织代码的基本单元。
  3. 类(Class):

    • 类是 Java 程序中的基本组成单元,它包含字段、方法等成员。
    • 类被组织在包内,可以通过包名和类名唯一标识。

模块、包、类之间的关系:

  • 一个模块可以包含多个包,模块定义了对外提供的包和对其他模块的依赖关系。
  • 一个包可以包含多个类,包用于组织和命名空间管理类。
  • 一个类是 Java 程序中的基本单位,包含成员变量和方法。

目录结构示例:

my-java-project/
├── src/
│   ├── moduleone/
│   │   ├── module-info.java
│   │   ├── com.example.moduleone.api/
│   │      └── ModuleOneApiClass.java
│   │   ├── com.example.moduleone.internal/
│   │      └── ModuleOneInternalClass.java
│   ├── moduletwo/
│   │   ├── module-info.java
│   │   ├── com.example.moduletwo.api/
│   │       └── ModuleTwoApiClass.java
│   │   ├── com.example.moduletwo.internal/
│   │       └── ModuleTwoInternalClass.java
│   ├── mainapp/
│   │   ├── module-info.java
│   │   ├── com.example.mainapp/
│   │       └── MainAppClass.java
└── lib/
    ├── external-library.jar

在这个示例中:

  • moduleonemoduletwo 是两个模块,每个模块内部有一个 module-info.java 文件,用于定义模块的元信息。
  • com.example.moduleone.apicom.example.moduleone.internalmoduleone 模块内的两个包,分别包含了模块对外提供的 API 和内部类。
  • 同理,com.example.moduletwo.apicom.example.moduletwo.internal 分别是 moduletwo 模块内的包。
  • com.example.mainapp 是主应用程序模块内的包,包含了主应用程序的类 MainAppClass.java
  • lib 目录包含了外部库 external-library.jar

你可能感兴趣的:(Java,笔记)