7

我想知道为什么在 Java 中我们有包而不是库。关于这个问题,我和朋友们进行了很多讨论。他们告诉我们可以将包视为库。既然 C++ 已经有了库的概念,那么为什么需要创建一个名为 Packages 的新名称。

PS:如果他调用包库,是否真的值得纠正某人。

4

5 回答 5

9

是用于组织类的 Java 构造。他们提供:

  • 命名空间,用于放置类
  • 访问级别(包访问),允许该包中的类共享字段

而已; 实施者如何使用此组织功能取决于他们。

图书馆是另一个组织概念。然而,库的目的是为外部世界提供一个定义良好的接口和一个内部实现以根据需要执行。

两者都是组织思想,库通常由包组成(如果用 Java 实现)。但是,它们有不同的意图,因此给它们起不同的名称是明智的。通常,一个小型库可以放在一个包中,因此使用一个来表示另一个可能不会造成混淆。但是,它们并不相同。

于 2013-06-06T12:46:54.850 回答
6

包是命名空间。有无数的“Util”类,但您可以唯一地识别它们,因为它们的完全限定名称是包 + 类名。

库是一组同意提供特性/功能的类。

于 2013-06-06T12:44:55.633 回答
5

包并不是真正的库。如果您将 jar 文件视为一个单独的库,那就更接近了。包很有用,因为它们为项目提供了逻辑结构,例如目录层次结构。此外,Java 在对象中维护运行时信息,并且包路径是标识特定类的唯一方式,因为您可以拥有多个具有相同名称的类。

在 C/C++ 中,您对运行时信息的支持有限,因此情况有所不同。

于 2013-06-06T12:33:37.133 回答
3

在 Java 世界中,逻辑是一组类,通常在某个共同的包名下,例如org.apache.commons.io打包并分发为JAR 文件。有时库可以包含几个 JAR,然后它通常被称为例如框架工具包平台......

当然,通用库定义也适用于此。

Java 包命名空间文件夹组织的形式,是完全限定名称的一部分。是的,实际上这个类是由包+简单的类名来标识的,除了默认包是未命名的包。它背后也有逻辑,例如包范围,导入..但是对于这个问题来说太多了。

这是最大的 Java 库、工件或任何您命名它们的存储库:Maven 存储库

于 2013-06-06T13:22:42.773 回答
2

包和库是不同的概念。

C/C++ 中的库是相关函数/过程的集合。该库包含字符串操作函数。该库包含处理正则表达式等的函数...

Java 中的包旨在支持面向对象的设计原则(C 在 OO 出现之前出现)。Java 中的包是相关类的逻辑集合,应该能够以与推理单个类/模块相同的方式一起推理。

于 2013-06-06T12:46:35.130 回答