java包管理、import机制和访问控制权限是代码组织、复用与安全的底层支柱:package必须首行声明且目录严格匹配;import用于跨包引用,同包无需导入;public、protected、默认、private四档权限精准控制可见性,字段优先private,类仅支持public或默认。

Java 的包管理(package)、导入机制(import)和访问控制权限,不是语法装饰,而是代码组织、复用与安全的底层支柱。用错包结构或权限修饰符,轻则编译报错、调用失败,重则暴露内部实现、破坏封装、引发维护灾难。
包声明 package:必须放在文件最顶部
每个 Java 源文件最多只能有一个 package 声明,且必须是除注释外的第一行有效语句。
- 包名推荐使用小写字母,按反向域名规范命名,例如 com.example.user 或 org.myproject.service
- 目录结构必须严格匹配包路径:声明 package com.example.dao;,源文件就必须存放在 com/example/dao/ 子目录下
- 编译时需用 javac -d . Xxx.java,让编译器自动创建对应目录;运行时要用完整类名,如 java com.example.dao.UserDao
- 未声明 package 的类属于“默认包”,不建议在项目中使用——它无法被其他包 import,也不支持 public 类的跨包访问
导入机制 import:精准引用,避免歧义
import 不是把类复制进来,而是为编译器提供类的全限定名(fully qualified name)的快捷引用方式。
- 同包内类可直接使用,无需 import
- 跨包使用必须 import:import java.util.ArrayList; 或 import java.util.*;(后者只导入实际用到的类,无性能损耗)
- import 必须位于 package 声明之后、class 声明之前;多个 import 按字母顺序排列更易维护
- 若两个不同包含同名类(如 java.util.Date 和 java.sql.Date),只能 import 其中一个,另一个必须用全限定名调用
- java.lang 包下的类(如 String、System、Object)自动导入,无需显式书写
访问控制权限:四档分明,各守其界
权限修饰符决定成员(字段、方法)或类型(类、接口)能被谁看到、谁调用。不是越公开越好,而是按需最小开放。
- public:任何地方都能访问。类、接口、成员均可使用;但一个源文件中最多一个 public 类,且文件名必须与之完全一致
- protected:本类 + 同包 + 其他包中的子类可访问。常用于父类希望子类继承并重写的方法,但又不希望被无关类调用
- 默认(包级私有):不写任何修饰符。仅限本类 + 同包内其他类访问。适合模块内部协作,天然形成“包内可见”的边界
- private:仅本类内部可访问。字段优先设为 private,配合 getter/setter 控制读写逻辑,这是封装的核心实践
权限修饰符能修饰什么?明确限制不可乱用
不是所有修饰符都适用于所有元素:
- 字段和方法:四种权限(private、protected、default、public)全部支持
- 类和接口:只允许 public 或默认(不写)。public 类可被任意包访问;默认类只能被同包访问
- 构造方法:同样支持全部四种权限。设为 private 可实现单例;设为 protected 可限制子类实例化方式
- 内部类:可独立设置权限,包括 private 内部类(仅外部类可访问)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











