包(package)
首先是包的理解,在调用类的时候往往会遇到相同名字的类,因此Sun允许在类名前增加一个前缀来区别这些类。Java中引入了包(package)机制,也就是区别用的机制。
使用方法:package packageName1.packageName2.packageName3...
注意一旦在Java源文件中使用了这个package语句,则意味着该源文件里定义的所有类都属于这个包。位于包中的每个类的完整类名都应该是包名和类名的组合。
简单的例子:
package test;
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello Java!");
}
}
这里可能遇到的问题:找不到或无法加载主类Hello
经过查找发现,在文件夹test内的确是生成了Hello的class文件,这里便涉及到package的路径要求,我们必须按照自己设置的目录进行操作。


Java的包机制需要两个条件的保证:
1.源文件里使用package语句指定包名
2.class文件必须放在对应的路径下
同一个包下的类可以自由访问,当遇到子包及子包以下则需要写成完整路径加类名,如在A包内还有一个B包,同时在B包中定义了一个C类,那么在A中创建C类的对象则需要以下代码:
A.B.C test = new A.B.C();
import
但在实际操作中这是非常繁杂的,因此Java引入了import关键字,import可以向Java文件中导入指定包层次下某个类或全部类,import语句应该出现在package语句之后,类定义之前。
使用起来也和package相似,即:improt package1.package2...
如上述的A.B.C类:
import A.B.C;
如我们需要导入某个文件内所有的类,而不是指定几个,我们则可以运用星号(*),但需要注意的是星号只能代表类,不能代表包。 import A.*语句,它表明A包下所有的类,而A中作为B的子包内的类并不会被导入。一旦导入成功,则不再需要繁杂的描写,只需要简单的类名完成定义。
import A.B.C;
//也可以import A.B.*;
public class Test
{
public static void main(String[] args)
{
C test = new C();
}
}
正如上面代码所示,import可以作为简化工具,但也不是必须的,只要坚持在类使用其他类的全名,则可以无需使用import语句。