java文件名为什么要与public声明的类名同名?

以下观点是自己对同名原因的理解,希望行家不吝赐教!

  在讨论这个问题之前,我想请大家思考一个问题。将声明的一个类用public修饰的意义在哪里?我相信很多朋友会想到访问、调用权限声明,public、private等是对其他类能否调用该类的明确界定,其作用是不言而喻的。那么这些与同名问题有什么关联呢?

   未限定声明的类可在同一包中被调用,java程序编译时会将源文件生成以各自类命名的.class文件,因此在同一包中不能定义相同名称的类,否则会引发冲突,系统会报错。而声明为public的类可以被包外的类引用,只需要import 包名 文件名.java,就可以使用该类。这里我要指出:编译器在执行这条语句时会根据路径反向查找,而此时的文件名能帮助编译器快速定位所编译类的位置。想要快速实现这一过程,就需要遵循规则,而将声明的类与文件名同名,能很好地解决这一问题。同时,因为未限定声明的类不存在包外调用,所以其命名也能很随意,因为系统不需要花功夫查找它,只是在包内使用时进行遍历。

  其实,我们可以把同名理解为规则,编译单元将public修饰符看做是一个java的公开接口,在对一个java程序编译前,会先检验该文件是否符合规范(规则是我只能接收一个或没有public修饰的类,其他的都不准通过!!!)当然,若编译器检查其符合规范且有public声明,为了提高效率,让编程员把该文件命名为与pubic 类同名的文件再好不过。


参考:

一个java源文件为什么只能有一个public类呢?当这个类被修饰public的话,为什么源文件名必须要与类名相同呢?

Java中类名与文件名的关系


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,131评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,773评论 19 139
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,780评论 0 4
  • 在动作类RPG游戏中,为了体现角色的技能和增加动作打击感,我们常常会给相机添加抖动效果来配合特效做一些技能效果。我...
    Unity云中客阅读 9,125评论 0 6
  • 七夕(2).......等候牛郎和织女(309) ■六月飞雪 一条风雨飘泊的人生路 飘过 多少年 牛郎和...
    朝花夕拾123阅读 1,800评论 0 14