package 关键字
概述
package
关键字用于声明包,将相关的类和接口组织在一起,提供命名空间和访问控制。
语法格式
package com.company.project.module;
public class ClassName {
// 类定义
}
基本用法
// 文件:com/example/model/User.java
package com.example.model;
public class User {
private String username;
private String email;
public User(String username, String email) {
this.username = username;
this.email = email;
}
public String getUsername() {
return username;
}
public String getEmail() {
return email;
}
}
// 文件:com/example/service/UserService.java
package com.example.service;
import com.example.model.User;
public class UserService {
public void createUser(String username, String email) {
User user = new User(username, email);
System.out.println("创建用户: " + user.getUsername());
}
public void sendEmail(User user, String message) {
System.out.println("发送邮件到 " + user.getEmail() + ": " + message);
}
}
// 文件:com/example/Main.java
package com.example;
import com.example.model.User;
import com.example.service.UserService;
public class Main {
public static void main(String[] args) {
UserService service = new UserService();
service.createUser("张三", "zhangsan@example.com");
User user = new User("李四", "lisi@example.com");
service.sendEmail(user, "欢迎注册!");
}
}
包访问控制
// 同包类可以访问包级私有成员
package com.example.utils;
class MathHelper {
// 包级私有 - 只有同包类可以访问
static double PI = 3.14159;
static double calculateArea(double radius) {
return PI * radius * radius;
}
}
public class Calculator {
public double getCircleArea(double radius) {
// 可以访问同包的包级私有成员
return MathHelper.calculateArea(radius);
}
public void showPI() {
System.out.println("PI值: " + MathHelper.PI);
}
}
包命名约定
// 公司域名反向:com.company.project
package com.google.common.collect;
// 组织域名反向:org.organization.project
package org.apache.commons.lang;
// 个人项目:your.name.project
package zhang.san.calculator;
// 功能模块划分
package com.example.ecommerce.model; // 数据模型
package com.example.ecommerce.service; // 业务服务
package com.example.ecommerce.controller; // 控制器
package com.example.ecommerce.dao; // 数据访问
package com.example.ecommerce.util; // 工具类
package关键字是Java模块化编程的基础,合理的包结构有助于代码组织和维护。