Java包名与包路径

很多初学者以为只要把生成的class文件放在某个目录下,这个目录名就成了这个类的包名。这是一个错误的看法,不是有了目录 结构,就等于有了包名。为Java类添加包必须在Java源文件中通过 package语句指定,单靠目录名是没法指定的。Java的包机制需要两 个方面保证:① 源文件里使用package语句指定包名;② class文 件必须放在对应的路径下
Java允许将一组功能相关的类放在同一个package下,从而组成逻辑上的类库单元。如果希望把一个类放在指定的包结构下,应该在 Java源程序的第一个非注释行放置如下格式的代码:
package packagename;

Java语法只要求包名是有效的标识符即可,但从可读性规范角度来看,包名应该全部是小写字母,而且应该由一个或多个有意义的单 词连缀而成。 当系统越来越大时,是否会发生包名、类名同时重复的情形呢? 这个可能性不大,但在实际开发中,还是应该选择合适的包名,用以 更好地组织系统中类库。为了避免不同公司之间类名的重复,Oracle 建议使用公司Internet域名倒写来作为包名,例如公司的Internet域 名是crazyit.org,则该公司的所有类都建议放在org.crazyit包及其 子包下.
父包和子包之间确实表示了某种内在的逻辑关系,例如前面介 的org.crazyit.elearnging
父包 org.crazyit.elearning.student子包,确实可以表明后者是前者的 一个模块。但父包和子包在用法上则不存在任何关系,如果父包中 的类需要使用子包中的类,则必须使用子包的全名,而不能省略父 包部分。
JDK 1.5以后更是增加了一种静态导入的语法,它用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法。 静态导入使用import static语句,静态导入也有两种语法,分别 用于导入指定类的单个静态成员变量、方法和全部静态成员变量、方 法,其中导入指定类的单个静态成员变量、方法的语法格式如下:

上 面 语 法 导 入 package.subpackage...ClassName 类 中 名 为fieldName的静态成员变量或者名为methodName的静态方法。例如,可 以 使 用 import static java.lang.System.out; 语 句 来 导 入 java.lang.System类的out静态成员变量。 导入指定类的全部静态成员变量、方法的语法格式如下:

所谓静态成员变量、静态方法其实就是前面介绍的类变量、类方法,它们都需要使用static修饰,而static在很多地方都被翻译为静 态,因此import static也就被翻译成了“静态导入”。其实完全可以 抛开这个翻译,用一句话来归纳import和import static的作用:使用 import可以省略写包名;而使用import static则可以连类名都省略。

 

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