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模块化编程的基础,合理的包结构有助于代码组织和维护。

powered by Gitbook© 2025 编外计划 | 最后修改: 2025-07-28 16:25:54

results matching ""

    No results matching ""