Logo

郎哥编程

理解Java包

2021-06-20 217

学习目标:学习管理和组织类文件的技术。

什么是Java包

在前面的课程案例中,对包有了初步认识。在Java项目中建立的类都要放置在某一包内,不同功能的类文件被放入到不同的包中,包类似于Windows资源管理器的文件夹,对类文件进行分类管理(如按照功能划分类文件),同种类型的类文件放入到同一个包中,这样做的好处是易于管理和使用类文件。

和Windows资源管理器的文件夹一样,包也采用了树形目录的存储方式。同一个包中类名字是不同的,不同包中类的名字可以相同,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免类名字冲突。

Java API中的类库就采用了包机制进行层次式管理。例如,下图显示了其组织结构的一部分。

001.jpg

从上图可以看出,一个名为Java的包中又包含了两个子包:io包和lang包。lang包中包含了System、String、Object这三个类文件。事实上,Java包中既可以包含类文件,也可以包含子包,或同时包含两者。从逻辑上讲,包是一组相关类的集合,从物理上讲,同包即同目录。

包的创建和在包内创建类文件的操作,我们应该非常清楚了。在类文件中使用关键字“package”来声明该类属于某一个包。

例如在PUnit7项目automobile中,BusTest类代码如下:

package automobile;
public class BusTest {
    public static void main(String[] args) {
        // 实例化Bus对象
        Bus bus = new Bus();
        // 调用接口方法
        bus.run();
        bus.speedUp();
        bus.speedDown();
 
    }
}

上面BusTest类文件代码的第一条语句是“package automobile;”,表明BusTest类文件被放置在automobile包内。

PUnit7项目的包逻辑结构如下图所示:

03.png

PUnit72项目有四个包,分别是automobile包、com包、unit包、pci包,每个包内有多个类文件。

PUnit7项目包对应的文件目录结构如下图所示:

04.png

从上图可以看出,PUnit7项目的包逻辑与文件目录结构是一一对应的

如何创建Java包

创建和使用包时需要注意如下几点:

(1)包的名称一般为小写,包名要有意义。例如:数学计算包名可以命名“math”,再如,绘图包可以命名“drawing”;

(2) 在创建包时,一次可以创建多层包。例如创建包时输入包名com.milihua. automobile,将会创建com包,在com包下创建milihua包,在milihua包下创建automobile包;

(2)在类中声明包时,使用package关键字;

(3)如果有包声明,包声明一定作为源代码的第一行。

使用import关键字导入包

为了使用不在同一个包中的类,需要在java程序使用import关键字导入这个类。前面的案例经常使用Scanner类获取用户的输入,Scanner类包含在Java API类库util包中,因此程序要使用Scanner类,就需要导入util包,导入util包语句如下:

import java.util.*;

该条语句意思是导入Java核心类库util包中的所有类,其中import是导入包关键字,Java.util是指Java核心类库中的util包,*是导入util包中的所有类。

更多导入包的例子:

//导入Java.util包中的Scanner类

import Java.util.Scanner;

//导入Java.util包中的Date类

import Java.util.Date;

//导入Java.net包中的所有类

import Java.net.*;

在Java代码中,import语句应位于package语句之后,类定义之前,可以有多条import语句。

在类内部使用其它包中的类。另外一个方法是在类代码中使用类的完全限定名称。例如,在类中要使用Scanner类,如果省略了导入Scanner的语句,则需要在使用Scanner类的位置使用Java.util.Scanner,也就是给出完整的类访问路径。

Java编译器默认为所有的Java程序引入了Java API的Java.lang 包中的所有的类。其中定义了一些常用类:System、String、Object、Math等。因此我们可以直接使用这些类,而不必显式引入。但使用其他包中的类时,则必须先引入、后使用。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论