讲师中心 微信公众号
AI工具推荐 视频效率加速

Java访问修饰符public、private、protected的语法

雨丽同学_2892

雨丽同学_2892

发布时间:2026-02-04 10:51:01

|

565人浏览过

|

来源于php中文网

原创

Java访问修饰符作用位置与范围:public可修饰类(须同名文件)、接口、成员等;protected/private仅限成员及内部类;protected跨包继承时只能通过this或隐式调用,不可通过父类实例访问。

java访问修饰符public、private、protected的语法

Java中public、private、protected能用在哪些位置

这三个修饰符不能随便写在哪都行,它们的合法位置取决于作用对象:类、成员变量、方法、构造器、内部类。比如 private 不能修饰外部类,protected 不能修饰顶层类(即非内部类),而 public 修饰的类必须和文件名一致。

常见错误现象:error: class XXX is public, should be declared in a file named XXX.java —— 就是因为把 public class 放在了错误命名的文件里。

  • public:可修饰类、接口、成员变量、方法、构造器、内部类
  • protected:只能修饰成员变量、方法、构造器、内部类(不能修饰外部类或接口)
  • private:只能修饰成员变量、方法、构造器、内部类(不能修饰类本身,除非是内部类)

不同修饰符的实际访问范围差异

不是“能不能看见”,而是“在什么上下文中能被访问”。Java 的访问控制基于「包」和「继承关系」两个维度,protected 尤其容易误解——它不只是“子类可用”,而是“本包 + 子类(无论是否同包)”。

对比关键点:

Web Accessibility (WCAG 2 AA))
Web Accessibility (WCAG 2 AA))

将 WCAG 2 AA 无障碍标准应用于设计系统、UI 组件和网页——通过可运行的验证器进行对比度计算,采用设计 token 模式使颜色天生可访问,设定排版和焦点状态规则,并提供语义检查清单。适用于构建或审查 UI。

下载

立即学习“Java免费学习笔记(深入)”;

  • private:仅当前类内部可访问(连子类都不行)
  • default(不写任何修饰符):仅同一包内可访问(无继承特殊性)
  • protected:同一包内任意类可访问;不同包的子类也可访问(但子类对象不能直接通过“父类实例.受保护成员”调用,必须通过继承链访问)
  • public:任何地方都能访问(前提是类本身可访问)

protected在跨包继承中的典型误用

很多人以为 protected 方法在子类中可以直接通过父类引用调用,结果编译报错:error: protectedMethod() has protected access in Parent。这是因为 Java 对 protected 成员的访问做了限制:子类中只能通过 this 或隐式继承调用,不能通过其他父类实例调用。

class Parent {
    protected void doWork() {}
}

class Child extends Parent {
    void test() {
        this.doWork();        // ✅ 正确:通过 this(即当前子类实例)
        doWork();             // ✅ 正确:隐式继承调用
        new Parent().doWork(); // ❌ 编译错误:Parent 实例不在 Child 类内部定义的继承上下文中
    }
}

修饰符对序列化、反射、Lombok等工具的影响

修饰符不只影响编译期可见性,还会影响运行时行为。例如:

  • 序列化(java.io.Serializable):private 字段默认会被序列化,但 transient 可阻止;protected 和 public 字段同理
  • 反射:AccessibleObject.setAccessible(true) 可绕过所有修饰符限制,但需注意模块系统(Java 9+)可能抛出 InaccessibleObjectException
  • Lombok 注解如 @Data 生成的 toString()、getter 默认只处理 public/protected/default 字段,private 字段也会被包含(因为 Lombok 在编译期注入,不受运行时访问限制)

最容易被忽略的是:protected 成员在模块化项目(module-info.java)中,即使同包,若未在 exports 中显式导出,跨模块访问仍会失败——这时修饰符只是第一道门,模块系统是第二道。

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

989

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3020

2023.10.25

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3168

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

4969

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3789

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

466

2026.01.19

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

3996

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

306

2025.12.06

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn