![零基础Java学习笔记](https://wfqqreader-1252317822.image.myqcloud.com/cover/177/36710177/b_36710177.jpg)
4.9 包
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_65.jpg?sign=1739277900-qiWGVlsjWeiX5450dYRDDZvJYGR3Lj2S-0-2a69b0bed1b21070ac665e7aafd49799)
Java 要求文件名和类名相同,因此,如果将多个类放在一起,很可能出现文件名冲突的情况,这时Java 提供了一种解决该问题的方法,即使用包将类进行分组。下面将对Java 中的包进行详细介绍。
4.9.1 包的概念
包(package)是Java 提供的一种区别类的命名空间的机制,是类的组织方式,是一组相关类和接口(接口将在第6 章为大家详细介绍)的集合,它提供了访问权限和命名的管理机制。Java 中提供的包主要有以下3 种用途。
(1)将功能相近的类放在同一个包中,可以方便查找与使用。
(2)由于在不同包中可以存在同名类,因此使用包在一定程度上可以避免命名冲突。
(3)在Java 中,某些访问权限是以包为单位的。
4.9.2 创建包
创建包可以通过在类或接口的源文件中使用package 语句实现,package 语句的语法格式如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_66.jpg?sign=1739277900-IpBwXpHWbP39pYlH74L7WgCxpS3cPM5B-0-889a541b1665d283be52c5929885b5c6)
●包名:必选参数,用于指定包的名称,包的名称必须为合法的Java 标识符。当包中还有包时,可以使用 “包1.包2.….包n” 进行指定,其中,包1 为最外层的包,而包n 为最内层的包。
package 语句位于类或接口源文件的第一行。例如,定义一个类Round,将其放入com.mr 包中的具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_67.jpg?sign=1739277900-75MNl7zCFDJVNStXd2n5hKfRNg9UINHD-0-fb7c1bfedf4a75b2d0ca496ede94d487)
学习笔记
在Java 中提供的包相当于系统中的文件夹。例如,如果将上面代码中的Round 类保存到C 盘根目录下,则它的实际路径应该为 “C:\com\mr\Round.java”。
4.9.3 使用包中的类
类可以访问其所在包中的所有类,还可以使用其他包中的所有public 类。访问其他包中的public 类可以有以下两种方法。
(1)使用长名引用包中的类。
使用长名引用包中的类比较简单,只需要在每个类名前面加上完整的包名即可。例如,创建Round 类(保存在com.mr 包中)的对象并实例化该对象的代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_68.jpg?sign=1739277900-tMu7NddpDQeQZxh6PiDQFGZNDoAyqKEL-0-a9391124cbdc0eee042938c7c4fae7fb)
(2)使用import 语句引入包中的类。
由于采用使用长名引用包中的类的方法比较烦琐,因此Java 提供了import 语句来引入包中的类。import 语句的基本语法格式如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_69.jpg?sign=1739277900-gyF9rfxi3yxzq5xeWxdhVv2LUd6EjlLg-0-b4bf01caebd0f83405b7730202e9f890)
当存在多个包名时,各个包名之间使用“.”分隔,同时包名与类名之间也使用“.”分隔。
“*” 表示包中所有的类。
例如,引入com.mr 包中的Round 类的代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_70.jpg?sign=1739277900-WDyjyby5YiVo5dTtCgpHgCUaPvUui7DB-0-9b6aae44f457e7d5264e2a8eda9069d7)
如果com.mr 包中包含多个类,则可以使用以下代码引入该包下的全部类:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_71.jpg?sign=1739277900-TfacQ4XFzunAuBjkk5p0uUw3NEJafRKi-0-4da072fb71b444c25cb6899202210863)