Java入门学习笔记-package和import

1,203 阅读2分钟

包(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语句。