一个.java文件内只能写一个class吗
先给结论:当然不是!!
可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以不含public类,如果只有一个非public类,此时可以跟文件名不同。
为什么一个java源文件中只能有一个public类?
在java编程思想(第四版)一书中有这样3段话(6.4 类的访问权限):
- 每个编译单元(文件)都只能有一个public类,这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出错误信息。
- public类的名称必须完全与含有该编译单元的文件名相同,包含大小写。如果不匹配,同样将得到编译错误。
- 虽然不是很常用,但编译单元内完全不带public类也是可能的。在这种情况下,可以随意对文件命名。
例如:
package ab;
class Alpha {
private int privateVar;
Alpha(int _privateVar){ //构造方法
privateVar = _privateVar;
}
boolean isEuqualTo(Alpha b) {
if (this.privateVar == b.privateVar) return true;
else return false;
}
}
public class Beta{
public static void main(String[] args){
Alpha a = new Alpha(1);
Alpha b = new Alpha(2);
System.out.println(a.isEuqualTo(b));
}
}
编译会产生两个.class文件,且能正确运行。

其次,这里并没有要求main函数只能写在public类中(虽然我们通常是这么做的)。我们可以把main函数写在非public类中,例如新建test.java:
package exercise;
public class test {
public static void func(){
System.out.println(1);
}
}
class test2{
public static void main(String[] args){
System.out.println(2);
}
}
Java里面就是main方法(这个main方法只需要放到任意一个类中即可)。当你用java执行这个类时,系统会寻找main方法作为入口执行。
所以这里test类中的函数根本没有执行,结果只打印出2。
参考链接:
1、https://www.cnblogs.com/zhukunqiang/p/6652787.html
2、https://blog.csdn.net/bareheadzzq/article/details/6562211
3、https://www.jianshu.com/p/8624e27ae45d
一个.java文件内只能写一个class吗的更多相关文章
- 为什么一个java源文件中只能有一个public类
问题:一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 答案:可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致.一个文件 ...
- 浅谈为什么一个java源文件中只能有一个public类?
声明,本篇文章为转载 转载 http://blog.csdn.net/bareheadzzq/article/details/6562211 最近在一个java文件中实现了几个类,其中一个声明为pub ...
- 常用代码之五:RequireJS, 一个Define需要且只能有一个返回值/对象,一个JS文件里只能放一个Define.
RequireJS 介绍说一个JS文件里只能放一个Define,这个众所周知,不提. 关于Define,它需要有一个返回值/对象,且只能有一个返回值/对象,这一点却是好多帖子没有提到的,但又非常重要的 ...
- 第7章 一个java源文件中只能有一个public类
一个Java源文件中最多只能有一个public类, 1)当有一个public类时,源文件名必须与之一致,否则无法编译, 2)如果源文件中没有一个public类,则文件名与类中没有一致性要求. 至于ma ...
- .java 文件中只能定义一个public class 且与文件名相同
- Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)
要求:统计一个src文件下的所有.java文件内的代码行数(注释行.空白行不统计在内) 分析:先封装一个静态方法用于统计确定的.java文件的有效代码行数.使用字符缓冲流读取文件,首先判断是否是块注释 ...
- 一个.java文件中是否可以有多个类
前段时间,有个同事问到我这个问题:一个.java文件中是否可以有多个类? 答案:可以有多个类,但最多只能有一个被public修饰的class. 且若这个.java文件中有一个public类型的clas ...
- 一个项目中:只能存在一个 WebMvcConfigurationSupport (静态文件失效之坑)
一个项目中:只能存在一个 WebMvcConfigurationSupport 在一个项目中WebMvcConfigurationSupport只能存在一个,多个的时候,只有一个会生效. 静态文件访问 ...
- 一个Java文件至多包含一个公共类
编写一个java源文件时,该源文件又称为编译单元.一个java文件可以包含多个类,但至多包含一个公共类,作为编译时该java文件的公用接口,公共类的名字和源文件的名字要相同,源文件名字的格式为[公共类 ...
随机推荐
- 19个很有用的 JavaScript库推荐
流行的 JavaScript 库有jQuery,MooTools,Prototype,Dojo和YUI等,这些 JavaScript 库功能丰富,加上它们众多的插件,几乎能实现任何你需要的功能 然而需 ...
- surface shader相关参数,命令
https://docs.unity3d.com/Manual/SL-SurfaceShaders.html 说明: 注意下surfaceshader相关开关选项,input结构体全部可用参数 goo ...
- 关于spring的简概
一.Spring入门操作 IOC 创建对象 <bean id="user" class="com.itheima.domain.User">< ...
- Hexo - 记录一次Pages服务部署失败的原因
问题与分析 某天忽然发现,一直运行得好好的Pages服务部署失败了,GitHub Pages报错如下: Your site is having problems building: The tag c ...
- 牛客假日团队赛2 A.买一送一
链接: https://ac.nowcoder.com/acm/contest/924/A 题意: Farmer John在网上买干草.他发现了一笔特殊的买卖.他每买一捆大小为A(1 <= A ...
- Codeforces 1C(外接圆与正多边形)
要点 各点肯定都在外接圆上,边越多越接近圆面积,所以要最小面积应当取可能的最少边数. 给三角形求外接圆半径公式:\(R=\frac{abc}{4S}\). 三个角度对应的圆心角取gcd即是要求的正多边 ...
- 线程池(1)ThreadPoolExecutor梳理
使用默认的 thread factory创建ThreadPoolExecutor实例 public ThreadPoolExecutor(int corePoolSize, int maximumPo ...
- 什么是.NET for Apache Spark?
什么是.NET for Apache Spark? 分享一个.NET平台开源免费跨平台的大数据分析框架.NET for Apache Spark for Apache Spark 今天早上六点半左 ...
- 爬虫(cookie)——renren模拟登陆
工具:python3 步骤: 1)使用cookiejar.CookieJar()构建一个CookieJar()构建一个对象,用来保存cookie的值 2)使用HTTPCookieProcessor() ...
- CSS——制作天天生鲜登陆页面
这个登陆页面主要是有一个form表单,其他的和首页差不多的. login.html: <!DOCTYPE html> <html lang="en"> &l ...