Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 3.6 包和访问修饰符

3.6 包和访问修饰符

包的概述

包(Package)是Java中用于组织类和接口的命名空间机制。通过使用包,可以:

  • 避免命名冲突
  • 提供更好的代码组织和模块化
  • 控制访问权限(结合访问修饰符使用)

包的定义与使用

// 定义包
package com.example.mypackage;

// 导入其他包中的类
import java.util.ArrayList;
import java.util.List;

包命名规范

  1. 使用逆序的域名作为前缀(如:com.example)
  2. 全部小写字母
  3. 使用点号(.)分隔不同层级
  4. 避免使用Java保留字

访问修饰符

Java提供了四种访问控制级别:

修饰符类内同包子类其他包
private✔✖✖✖
(default)✔✔✖✖
protected✔✔✔✖
public✔✔✔✔

1. private

  • 仅限当前类内部访问
  • 常用于封装类的内部实现细节
private int secretValue;
private void internalMethod() {...}

2. 默认(包私有)

  • 不使用任何修饰符时默认的访问级别
  • 允许同一包内的其他类访问
class PackagePrivateClass {
    int packagePrivateField;
    void packagePrivateMethod() {...}
}

3. protected

  • 允许同一包内的类和不同包中的子类访问
protected void parentMethod() {...}

4. public

  • 完全公开,任何地方都可以访问
  • 常用于API接口
public class PublicClass {
    public static final String CONSTANT = "value";
    public void publicMethod() {...}
}

最佳实践

  1. 优先使用最严格的访问级别(private > default > protected > public)
  2. 字段通常设为private,通过public方法提供访问
  3. 工具类的方法通常设为public static
  4. 避免使用protected字段,防止子类过度依赖父类实现

静态导入(static import)

允许直接使用静态成员而不需要类名前缀:

import static java.lang.Math.PI;
import static java.lang.Math.pow;

double area = PI * pow(radius, 2);

常见问题

  1. 循环依赖:避免包之间的循环引用
  2. 过度暴露:避免不必要地使用public修饰符
  3. 包膨胀:避免创建过大的包(建议每个包包含5-20个类)

总结

合理使用包和访问修饰符是Java面向对象设计的重要方面,它们共同构成了Java的封装机制,是构建可维护、可扩展软件系统的基础。

Last Updated:: 3/27/25, 12:48 PM