Java名字的可见性
在所有措施设计语言里,一个不行制止的问题是对名字或名称的节制。假设您在措施的某个模块里利用了一个名字,而另一名措施员在另一个模块里利用了沟通的名字。此时,如何区分两个名字,并防备两个名字相互斗嘴呢?这个问题在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的这种非凡机制意味着所有文件都自动存在于本身的定名空间里。并且一个文件里的每个类都自动得到一个唯一无二的标识符(虽然,一个文件里的类名必需是独一的)。所以不必进修非凡的语言常识来办理这个问题——语言自己已帮我们照顾到这一点。