精通 Java 包:创建、导入与最佳实践
什么是 Java 包?
Java 包 是类、子包和接口的集合。它帮助将类组织成文件夹结构,便于查找和使用,更重要的是提高代码复用性。
每个包有唯一名称,将其类和接口组织进独立命名空间或名称组。
虽然同名接口和类不能出现在同一包,但可在不同包中出现,靠为每个包分配独立命名空间实现。
语法:
package nameOfPackage;
以下视频演示创建包的步骤。
视频不可访问请点击此处
通过示例学习包。我们定义类和对象,稍后在包 p1 中编译执行。
如何创建包?
创建包步骤:
- 选择包名
- 在 Java 源文件首行写 package 命令
- 源文件包含想放入包的类、接口等
- 编译生成 Java 包
步骤 1) 考虑以下 Java 包程序:
package p1; class c1(){ public void m1(){ System.out.println("m1 of c1"); } public static void main(string args[]){ c1 obj = new c1(); obj.m1(); } }

要点:
- 首行定义 package p1 将类放入包
- 创建类 c1
- 定义打印行的方法 m1
- 定义 main 方法
- 创建 c1 对象
- 调用 m1
步骤 2) 保存文件为 demo.java


步骤 3) 编译文件。

编译完成,生成 c1.class 文件。但未创建包?下一步解决。

步骤 4) 创建包,用命令:
javac –d . demo.java
此命令强制编译器创建包。"." 代表当前工作目录。

步骤 5) 执行代码,创建包 p1,打开包内可见 c1.class 文件。

步骤 6) 用以下命令编译同一文件:
javac –d .. demo.java
".." 表示父目录。本例文件保存至父目录 C 盘。

执行上述代码后文件保存在父目录。

步骤 7) 若想在现有包 p1 下创建子包 p2,修改代码为:
package p1.p2; class c1{ public void m1() { System.out.println("m1 of c1"); } }

步骤 8) 编译文件

如下截图,在包 p1 内创建子包 p2 并含类 c1。

步骤 9) 执行代码需写类全限定名:包名 + 子包名 + 类名 ——
java p1.p2.c1

按此执行包,输出代码中的 "m1 of c1"。

如何导入包
在代码中创建包内类的对象,须使用其全限定名。
示例:
java.awt.event.actionListner object = new java.awt.event.actionListner();
但为每个类输入长点分路径繁琐。推荐用 import 语句。
语法
import packageName;
导入后可不写全限定名直接使用类。
import java.awt.event.*; // * 表示导入该包所有类 import javax.swing.JFrame // 仅导入 JFrame 类 // 使用 JFrame f = new JFrame; // 无需全限定名
示例:导入包
步骤 1) 复制代码到编辑器。
package p3; import p1.*; // 仅导入包 p1 类,不含子包 p2 class c3{ public void m3(){ System.out.println("Method m3 of Class c3"); } public static void main(String args[]){ c1 obj1 = new c1(); obj1.m1(); } }
步骤 2) 保存为 Demo2.java。用命令 javac –d . Demo2.java 编译。
步骤 3) 用命令 java p3.c3 执行。
包 —— 注意事项
- 为避免命名冲突,包名常用公司域名反序,如 com.guru99、com.microsoft、com.infosys 等。
- 未指定包名时,类属于默认包(当前工作目录),包本身无名。故之前能直接执行作业。
- 创建包时,package 语句必须写在任何 import 语句之前。
// 不允许 import package p1.*; package p3; // 正确语法 package p3; import package p1.*;
java.lang 包 默认对任何 Java 类自动导入。
Java API 极其丰富,含从数据结构操作到网络编程几乎所有编程任务的类。你常会在代码中使用 API 文件。可在此查看 API 文档。
java
- 打造零摩擦用户体验:UX 设计蓝图与实战五原则
- Java EE应用部署Microsoft Azure全流程实战指南
- VHDL 字符串列表创建:最佳实践与示例
- 构建VHDL自检测试平台实战指南
- 用VHDL受保护类型和访问指针实现动态链表
- 构建可靠VHDL计时器:从时钟周期计数到小时
- Python 包:结构、导入与最佳实践
- Java 对象数组创建:分步指南
- Java 生成随机数实战:Random 与 Math.random 详解
- Java BufferedReader 读取文件:实战指南与示例
- Java 中 char 与 String 相互转换:实用示例与最佳实践
- Java 递归反转字符串:原理、代码实现与性能分析