Java中public class与class

news/2026/1/18 11:26:31/文章来源:https://www.cnblogs.com/xiaoxiaojavz/p/19498076

你想弄清楚Java中public classclass(默认访问权限)的核心区别,这是Java类定义的基础知识点,我会用通俗易懂的语言+代码示例,帮你把两者的差异、使用规则和适用场景讲透。

一、核心区别总览

先通过表格直观对比核心差异:

特性 public class(公有类) class(默认访问权限,也称包访问权限)
访问范围 整个项目中所有包的类都能访问 仅同一包内的类可以访问
文件名要求 类名必须与.java文件名完全一致(大小写敏感) 类名可以与文件名不一致
一个文件中数量 一个.java文件只能有1个public class 一个.java文件可以有多个默认类

二、代码示例:直观理解差异

场景1:同一包内访问(默认类和公有类都可访问)

// 包名:com.example.demo
package com.example.demo;// 1. public class:类名=文件名(DemoPublic.java)
public class DemoPublic {public void sayHello() {System.out.println("我是公有类,全项目可访问");}
}// 2. 默认类:类名≠文件名也可以
class DemoDefault {public void sayHi() {System.out.println("我是默认类,仅同包可访问");}
}// 测试类(同一包内)
public class TestSamePackage {public static void main(String[] args) {// 同一包内,两种类都能创建对象并调用方法DemoPublic publicObj = new DemoPublic();publicObj.sayHello();DemoDefault defaultObj = new DemoDefault();defaultObj.sayHi();}
}

输出结果

我是公有类,全项目可访问
我是默认类,仅同包可访问

场景2:不同包访问(仅public class可访问)

// 包名:com.example.other(和上面的包不同)
package com.example.other;// 导入公有类(默认类无法导入)
import com.example.demo.DemoPublic;public class TestDifferentPackage {public static void main(String[] args) {// 1. 公有类:跨包可访问,正常创建对象DemoPublic publicObj = new DemoPublic();publicObj.sayHello();// 2. 默认类:跨包无法访问,编译报错!// com.example.demo.DemoDefault defaultObj = new com.example.demo.DemoDefault();}
}

关键结果

  • 公有类DemoPublic跨包可正常使用;
  • 默认类DemoDefault跨包无法访问,编译器直接报错(提示“找不到符号”)。

三、核心规则详解

1. 文件名规则(重点!新手易踩坑)

  • public class
    • 必须满足「类名 = 文件名」(大小写完全一致),比如public class User必须放在User.java文件中;
    • 一个.java文件只能有一个public class(可以有多个默认类)。
  • 默认class
    • 类名可以和文件名无关,比如class Student可以放在Teacher.java文件中;
    • 一个.java文件可以有多个默认类。

2. 访问权限规则(核心)

  • public class:访问权限是“全局”的,项目中任何包的类,只要通过import导入(或写全类名),就能访问、创建对象、调用其公有方法/属性。
  • 默认class:访问权限是“包级”的,只有和它在同一个包下的类能访问,跨包时完全不可见(即使导入也没用)。

3. 适用场景

类类型 适用场景 示例
public class 对外提供功能的核心类、需要跨包复用的类 工具类、实体类(User、Order)
默认class 仅当前包内使用的辅助类、工具类(无需对外暴露) 包内的临时数据处理类、内部辅助类

四、新手常见错误及避坑

  1. 错误1:一个.java文件写多个public class

    // 错误!Test.java文件中不能有2个public class
    public class Test1 {}
    public class Test2 {}
    

    解决:保留一个public class,其余改为默认class,或拆分成多个.java文件。

  2. 错误2:public class的类名和文件名不一致

    // 文件名为Hello.java,但public类名是World,编译报错
    public class World {}
    

    解决:要么修改类名为Hello,要么修改文件名为World.java(保持一致)。

  3. 错误3:跨包使用默认class
    解决:如果需要跨包访问,把默认class改为public class;如果仅包内使用,就保持默认权限(更安全,减少暴露)。

总结

  1. 核心差异public class是全局访问、类名必须和文件名一致;class(默认)是包级访问、类名可与文件名不同。
  2. 访问权限:public类跨包可访问,默认类仅同包可访问,这是控制代码“对外暴露范围”的核心手段。
  3. 使用原则:需要对外提供功能的类用public class,仅包内使用的辅助类用默认class(遵循“最小权限原则”,更安全)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1177973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8.2 病灶检测与分割:精准识别医学影像异常区域

8.2 病灶检测与分割:精准识别医学影像异常区域 在上一章中,我们学习了UNet和TransUNet等医学图像分割的基础模型。本章将深入探讨病灶检测与分割这一关键任务,这是医学影像分析中的核心应用之一。病灶检测与分割的目标是从医学影像中准确识别出异常区域(如肿瘤、病变等),…

5.3 表格识别与版面分析:搞定复杂文档结构解析

5.3 表格识别与版面分析:搞定复杂文档结构解析 引言 在前两节中,我们学习了OCR技术的发展历程和主流的多模态OCR架构。在实际应用中,许多文档具有复杂的结构,特别是表格和版面布局,这对OCR系统提出了更高的要求。表格识别和版面分析是文档理解中的关键任务,它们能够帮助…

ACPI!ACPIBuildCompleteCommon函数的作用是设置buildRequest->WorkDone为buildRequest->NextWorkDone以节点CP01为例子说明

ACPI!ACPIBuildCompleteCommon函数的作用是设置buildRequest->WorkDone为buildRequest->NextWorkDone1: kd> gu Breakpoint 5 hit eaxf7420746 ebx00000000 ecx89d37c08 edx00000000 esi89d37c0c edif743b318 eipf74133c3 espf791ad6c ebpf791adac iopl0 nv u…

Lesson12

Lesson 85-86 1、单词 漂亮beautiful nicesmartlovelygood-looking:男女均可以gorgeous just表示"刚刚"时只能用于现在完成时    Have you just been...just now在一般过去时中表达"刚刚"  …

【2026亲测】一键彻底禁止Windows 10/11自动更新,让电脑暂停更新100年!

你是否厌倦了Windows系统在工作或游戏时突然弹出的“正在更新”提示?虽然微软推送更新是为了安全,但在实际体验中,频繁的强制重启、更新后的驱动不兼容、甚至突如其来的“蓝屏死机”,让无数用户头疼不已。 更让人无奈的是&#xf…

5.4 OCR+翻译一体化:中英文混排文档的智能处理

5.4 OCR+翻译一体化:中英文混排文档的智能处理 引言 在前三节中,我们学习了OCR技术的发展历程、多模态OCR架构以及表格识别和版面分析技术。在实际应用中,许多文档包含多种语言的混合排版,特别是在国际化的商业和学术环境中,中英文混排文档非常常见。如何高效地处理这类…

6.2 视觉定位Grounding:让AI指出图像中的具体物体

6.2 视觉定位Grounding:让AI指出图像中的具体物体 引言 在上一节中,我们学习了视觉问答(VQA)技术,它让AI能够理解图像内容并回答相关问题。然而,在许多实际应用中,我们不仅需要AI理解图像中的内容,还需要它能够精确定位图像中的具体物体或区域。这就是视觉定位(Visu…

36排刀机怎么选?2025年附近重切削机型排行解析,动力刀塔/36排刀机/4+4车铣/尾顶机/双主轴/Y轴/正交Y排刀机定制有哪些 - 品牌推荐师

在精密制造领域,排刀机以其结构紧凑、换刀速度快、刚性强等优势,成为中小型、多工序复杂零件批量生产的利器。随着新能源汽车、高端装备、精密医疗器械等行业的迅猛发展,对零件加工效率与精度的要求日益严苛,尤其是…

6.3 DETR与GLIP:新一代目标检测技术详解

6.3 DETR与GLIP:新一代目标检测技术详解 引言 在前两节中,我们学习了视觉问答(VQA)和视觉定位(Grounding)技术,这些技术都依赖于准确的目标检测作为基础。传统的目标检测方法如Faster R-CNN、YOLO等虽然性能优秀,但存在一些固有的局限性,如需要复杂的后处理步骤(如…

2026年江苏省考面试培训企业推荐,中政公考靠谱之选 - 工业品牌热点

在江苏省考面试的备考赛道上,选择一家靠谱的培训机构,就像为冲刺阶段配备了精准的导航与强劲的引擎,直接关系到能否在千军万马中突出重围。面对市场上鱼龙混杂的机构,如何找到真正能提升面试能力、助力上岸的良师益…

2025年AI超级员工企业用户口碑排行,AI员工/AI超级员工/AI企业员工/AI智能员工供应商口碑推荐榜 - 品牌推荐师

行业洞察:AI超级员工市场迎来爆发式增长 随着人工智能技术的快速发展,AI超级员工正成为企业数字化转型的重要推动力。据行业数据显示,2024年全球AI超级员工市场规模已突破千亿元,预计到2025年将保持30%以上的年均增…

如何在Java中实现线程间的通信?

一、线程间通信的核心场景最典型的场景是生产者 - 消费者模型:生产者线程:生产数据(往共享容器里放数据)消费者线程:消费数据(从共享容器里取数据)通信需求:容器满时生产者等待&…

AI 写论文哪个软件最好?实测封神!虎贲等考 AI 凭硬核实力领跑全场

毕业季的论文战场硝烟四起,“AI 写论文哪个软件最好” 的灵魂拷问,成了无数学生的每日必问。有人踩坑 “虚构文献生成器”,查重率居高不下;有人被 “AI 痕迹检测” 难住,辛苦写的论文被判违规;还有人在多个…

Conda 常用命令整理

环境管理 管理独立的 Python 运行环境,解决项目间依赖冲突。创建环境 # 创建名为 myenv 的新环境 conda create -n myenv# 创建并指定 Python 版本 conda create -n myenv python=3.9激活/切换环境 # 进入 myenv 环境…

AI 写论文哪个软件最好?实测虎贲等考 AI:毕业论文的智能通关王炸

毕业季的论文赛道上,“AI 写论文哪个软件最好” 的灵魂拷问,总能在高校互助群里刷屏。有人踩坑通用 AI 的 “文献幻觉”,有人栽在单一工具的 “功能割裂”,还有人被查重和 AIGC 检测的双重门槛难住。作为深耕论文写作科普的测评博…

6.4 Cross-Attention机制:视觉与语言如何深度融合

6.4 Cross-Attention机制:视觉与语言如何深度融合 引言 在前三节中,我们学习了视觉问答(VQA)、视觉定位(Grounding)以及DETR和GLIP等新一代目标检测技术。这些技术的核心都依赖于一个关键机制——跨模态注意力(Cross-Attention),它使得视觉和语言模态能够进行深层次…

spring传播机制事务相关

spring传播机制事务相关一、REQUIRED 核心规则(一句话记住) 有则加入,无则新建 完整严谨描述:当一个被 @Transactional 标记的目标方法执行时,先检查当前执行环境是否已经存在事务; 如果当前已有事务 → 该方法不…

别墅装修怎么选入户门?2025-2026别墅入户门选购终极指南:十大品牌权威排名揭晓 - 匠子网络

body { font-family: "Microsoft YaHei", sans-serif; line-height: 1.6; color: rgba(51, 51, 51, 1); max-width: 1200px; margin: 0 auto; padding: 20px } h1 { text-align: center; color: rgba(139, 6…

7.1 NL2SQL核心技术:让AI听懂你的自然语言查询

7.1 NL2SQL核心技术:让AI听懂你的自然语言查询 在人工智能时代,让计算机理解人类的自然语言并执行相应的操作一直是我们的终极目标之一。其中,将自然语言转换为SQL查询(NL2SQL)是一项非常重要的任务,它能够使非技术人员通过简单的自然语言指令来查询数据库,而无需掌握复…

有人吃NMN像换了个人,有人却没啥变化!盼生派带你搞懂NMN真相 - 速递信息

42岁的李女士没有任凭岁月摆布,没有断崖衰老,没有被人猜错年龄,她心里都很得意。这得益她改变了思路,才彻底告别了“抗衰焦虑”。曾经靠浓妆遮盖的法令纹变浅了,熬夜后第二天也不会昏沉乏力,就连体检报告上的各项…