多个public类

可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。
原因如下:

  1. 每个编译单元(文件)都只能有一个public类,这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出错误信息。

  2. public类的名称必须完全与含有该编译单元的文件名相同,包含大小写。如果不匹配,同样将得到编译错误。

  3. 虽然不是很常用,但编译单元内完全不带public类也是可能的。在这种情况下,可以随意对文件命名。

没有public类

如果没有public,外部调用Java源程序的时候会找不到接口,于是需要从生成的几个.class文件中选择一个作为数据来源,所以没有public类是允许的

小结

一个编译单元(java文件)可以存在多个类,在编译时产生多个不同的.class文件,.class文件便是程序运行的数据来源。java将public类作为每个编译单元的数据接口,只能有一个,不然不能处理存在多个类的java文件。当一个编译单元(java文件)有多个非public类时,运行时需要对数据来源进行选择。

为什么一个java源文件中只能有一个public类相关推荐

  1. 一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?

    java教程中有一句话叫做"在同一个源程序中只能有一个public类"---- 应该理解为只有一个public类的名字与文件名一致. 一个.java源文件中可以有多个类吗?(内部类 ...

  2. 一个java源文件允许_一个Java源文件中最多只能有一个class定义

    一个Java源文件中最多只能有一个class定义 答:× 确诊甲状腺功能紊乱的常规指标是 答:FT3和FT4 I will not let my children in that way. 答:be ...

  3. 在一个java源文件中只能定义_10在Java的一个源文件中可以定义多个类。

    [单选题]一组常量和抽象方法的集合可以定义成一个 ( ) [判断题]3.当定义一个类时没定义构造方法,则系统自动产生一个构方法. [填空题]JAVA源程序中,跨越多行的注释只需在开始和结尾处用____ ...

  4. c语言程序只能有一个源程序文件,下列说法哪个正确?() A.一个程序可以包含多个源文件 B.一个源文件中只能有一个类 C.一个源文件中可以...

    下列说法哪个正确?() A.一个程序可以包含多个源文件 B.一个源文件中只能有一个类 C.一个源文件中可以 更多相关问题 [问答题,简答题] 古埃及服饰中时常看到"蛇"." ...

  5. 一个java源文件中可以声明多少个class与编译后会生成多少个字节码文件

    在一个java源文件中可以声明多个class. 但是,只能最多有一个类声明为public的. 而且要求声明为public的类的类名必须与源文件名相同. 编译的过程 编译以后,会生成一个或多个字节码文件 ...

  6. 道听途说——JAVA文件中只能含有一个Public类

    java程序是从一个public类的main函数开始执行的 就像C程序是从main()函数开始执行一样. 只能有一个public类是为了给类装载器提供方便. 一个public类只能定义在以它的类名为文 ...

  7. 一个.java源文件中是否可以包括多个类

    可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 现在我们编个测试文件来测试一番(一个程序员要具有用于探索的精神   -.-     手动滑稽) 1.编写一个 a ...

  8. 一个java源文件只能有一个包声明语句_Java源文件的声明规则

    当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则: 一个源文件中只能有一个public类. 一个源文件可以有多个非public类. 源文件的名称应该和pu ...

  9. eclipse新建一个java_Eclipse中新建一个java源文件的步骤

    [简答题]请根据第六次讨论题目进行讨论.并将你的讨论回答的ppt传到此处. [简答题]P152页,习题9 一.二(2,3).请将回答的word文档上传到此处. [简答题]第五次讨论:讨论题目参见课程网 ...

最新文章

  1. 一文搞清楚QPS、TPS、并发用户数、吞吐量
  2. ubuntu宽带拨号linux,Ubuntu 通过无线进行ADSL拨号
  3. input 正则验证(摘)
  4. 使用iostat分析IO性能
  5. JDBC——基于Mysql的基本操作
  6. 指的是什么意思_扈三娘的外号一丈青,到底指的是什么意思?
  7. Java笔记-使用RabbitMQ的Java接口实现Publish/Subscribe(订阅模式)
  8. CubeMX的代码生成设置
  9. 20个Flutter实例视频教程-01节底部导航栏和切换效果的制作-1
  10. 《oracle大型数据库系统在AIX/unix上的实战详解》讨论45 显示某个登录用户的信息...
  11. 腾讯云不同账号之间VPC网络直接建立内网通讯
  12. 不积跬步无以至千里008
  13. 作为一个程序员,如何保持优秀
  14. 【GPT4】GPT4 官方报告解读
  15. 2022 IDEA全家桶使用最新主题(免申请)
  16. 这10种赚钱方法,用手机就可以做,看看哪种适合你?
  17. Tushare数据获取(python)
  18. useImperativeHandle
  19. 视频号自2023年起向商家收费;字节跳动裁员;阿里巴巴组织架构调整 | T资讯...
  20. 如何利用自己的开发能力在国内创建数字藏品 ----如何在国内创建合约发行数字藏品(nft)

热门文章

  1. 深入理解多重采样(Multisampling)
  2. Android开发之修改项目的仓库地址亲测有效
  3. php 如何设计索引_Mysql学习浅谈mysql的索引设计原则以及常见索引的区别
  4. java插入数据库字符串拼接_JAVA字符串怎么连接?
  5. centos7同一服务器安装两个或多个Tomcat
  6. (效果一)js实现上拉加载
  7. Promise 基础用法
  8. webpack指南-webpack入门-webpack的安装
  9. 深入理解计算机系统(2.3)---整数的表示方式精解无符号与补码编码(重要)...
  10. FOSRestBundle功能包:自动路由生成-单REST风格控制器