返回介绍

2.6.1 名字的可见性

发布于 2024-10-15 23:56:10 字数 773 浏览 0 评论 0 收藏 0

在所有程序设计语言里,一个不可避免的问题是对名字或名称的控制。假设您在程序的某个模块里使用了一个名字,而另一名程序员在另一个模块里使用了相同的名字。此时,如何区分两个名字,并防止两个名字互相冲突呢?这个问题在 C 语言里特别突出。因为程序未提供很好的名字管理方法。C++的类(即 Java 类的基础)嵌套使用类里的函数,使其不至于同其他类里的嵌套函数名冲突。然而,C++仍然允许使用全局数据以及全局函数,所以仍然难以避免冲突。为解决这个问题,C++用额外的关键字引入了“命名空间”的概念。

由于采用全新的机制,所以 Java 能完全避免这些问题。为了给一个库生成明确的名字,采用了与 Internet 域名类似的名字。事实上,Java 的设计者鼓励程序员反转使用自己的 Internet 域名,因为它们肯定是独一无二的。由于我的域名是 BruceEckel.com,所以我的实用工具库就可命名为 com.bruceeckel.utility.foibles。反转了域名后,可将点号想象成子目录。

在 Java 1.0 和 Java 1.1 中,域扩展名 com,edu,org,net 等都约定为大写形式。所以库的样子就变成:COM.bruceeckel.utility.foibles。然而,在 Java 1.2 的开发过程中,设计者发现这样做会造成一些问题。所以目前的整个软件包都以小写字母为标准。

Java 的这种特殊机制意味着所有文件都自动存在于自己的命名空间里。而且一个文件里的每个类都自动获得一个独一无二的标识符(当然,一个文件里的类名必须是唯一的)。所以不必学习特殊的语言知识来解决这个问题——语言本身已帮我们照顾到这一点。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文