为什么一个java源文件中只能有一个public类
多个public类
可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。
原因如下:
每个编译单元(文件)都只能有一个public类,这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出错误信息。
public类的名称必须完全与含有该编译单元的文件名相同,包含大小写。如果不匹配,同样将得到编译错误。
虽然不是很常用,但编译单元内完全不带public类也是可能的。在这种情况下,可以随意对文件命名。
没有public类
如果没有public,外部调用Java源程序的时候会找不到接口,于是需要从生成的几个.class文件中选择一个作为数据来源,所以没有public类是允许的
小结
一个编译单元(java文件)可以存在多个类,在编译时产生多个不同的.class文件,.class文件便是程序运行的数据来源。java将public类作为每个编译单元的数据接口,只能有一个,不然不能处理存在多个类的java文件。当一个编译单元(java文件)有多个非public类时,运行时需要对数据来源进行选择。
为什么一个java源文件中只能有一个public类相关推荐
- 一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?
java教程中有一句话叫做"在同一个源程序中只能有一个public类"---- 应该理解为只有一个public类的名字与文件名一致. 一个.java源文件中可以有多个类吗?(内部类 ...
- 一个java源文件允许_一个Java源文件中最多只能有一个class定义
一个Java源文件中最多只能有一个class定义 答:× 确诊甲状腺功能紊乱的常规指标是 答:FT3和FT4 I will not let my children in that way. 答:be ...
- 在一个java源文件中只能定义_10在Java的一个源文件中可以定义多个类。
[单选题]一组常量和抽象方法的集合可以定义成一个 ( ) [判断题]3.当定义一个类时没定义构造方法,则系统自动产生一个构方法. [填空题]JAVA源程序中,跨越多行的注释只需在开始和结尾处用____ ...
- c语言程序只能有一个源程序文件,下列说法哪个正确?() A.一个程序可以包含多个源文件 B.一个源文件中只能有一个类 C.一个源文件中可以...
下列说法哪个正确?() A.一个程序可以包含多个源文件 B.一个源文件中只能有一个类 C.一个源文件中可以 更多相关问题 [问答题,简答题] 古埃及服饰中时常看到"蛇"." ...
- 一个java源文件中可以声明多少个class与编译后会生成多少个字节码文件
在一个java源文件中可以声明多个class. 但是,只能最多有一个类声明为public的. 而且要求声明为public的类的类名必须与源文件名相同. 编译的过程 编译以后,会生成一个或多个字节码文件 ...
- 道听途说——JAVA文件中只能含有一个Public类
java程序是从一个public类的main函数开始执行的 就像C程序是从main()函数开始执行一样. 只能有一个public类是为了给类装载器提供方便. 一个public类只能定义在以它的类名为文 ...
- 一个.java源文件中是否可以包括多个类
可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 现在我们编个测试文件来测试一番(一个程序员要具有用于探索的精神 -.- 手动滑稽) 1.编写一个 a ...
- 一个java源文件只能有一个包声明语句_Java源文件的声明规则
当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则: 一个源文件中只能有一个public类. 一个源文件可以有多个非public类. 源文件的名称应该和pu ...
- eclipse新建一个java_Eclipse中新建一个java源文件的步骤
[简答题]请根据第六次讨论题目进行讨论.并将你的讨论回答的ppt传到此处. [简答题]P152页,习题9 一.二(2,3).请将回答的word文档上传到此处. [简答题]第五次讨论:讨论题目参见课程网 ...
最新文章
- 一文搞清楚QPS、TPS、并发用户数、吞吐量
- ubuntu宽带拨号linux,Ubuntu 通过无线进行ADSL拨号
- input 正则验证(摘)
- 使用iostat分析IO性能
- JDBC——基于Mysql的基本操作
- 指的是什么意思_扈三娘的外号一丈青,到底指的是什么意思?
- Java笔记-使用RabbitMQ的Java接口实现Publish/Subscribe(订阅模式)
- CubeMX的代码生成设置
- 20个Flutter实例视频教程-01节底部导航栏和切换效果的制作-1
- 《oracle大型数据库系统在AIX/unix上的实战详解》讨论45 显示某个登录用户的信息...
- 腾讯云不同账号之间VPC网络直接建立内网通讯
- 不积跬步无以至千里008
- 作为一个程序员,如何保持优秀
- 【GPT4】GPT4 官方报告解读
- 2022 IDEA全家桶使用最新主题(免申请)
- 这10种赚钱方法,用手机就可以做,看看哪种适合你?
- Tushare数据获取(python)
- useImperativeHandle
- 视频号自2023年起向商家收费;字节跳动裁员;阿里巴巴组织架构调整 | T资讯...
- 如何利用自己的开发能力在国内创建数字藏品 ----如何在国内创建合约发行数字藏品(nft)
热门文章
- 深入理解多重采样(Multisampling)
- Android开发之修改项目的仓库地址亲测有效
- php 如何设计索引_Mysql学习浅谈mysql的索引设计原则以及常见索引的区别
- java插入数据库字符串拼接_JAVA字符串怎么连接?
- centos7同一服务器安装两个或多个Tomcat
- (效果一)js实现上拉加载
- Promise 基础用法
- webpack指南-webpack入门-webpack的安装
- 深入理解计算机系统(2.3)---整数的表示方式精解无符号与补码编码(重要)...
- FOSRestBundle功能包:自动路由生成-单REST风格控制器