Java中类名与文件名的关系
1.Java保存的文件名必须与类名一致;
2.如果文件中只有一个类,文件名必须与类名一致;
3.一个Java文件中只能有一个public类;
4.如果文件中不止一个类,文件名必须与public类名一致;
5.如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。
当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也称为转译单元)。每个编译单元都必须要有一个后缀为.java,而在编译单元内测可以
有一个public类,该类的名称必须与文件名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public类,否则编译
器就不会接受。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为他们不是public类,而且他们主要用来为主要
public类提供支持。
1. 每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出出错信息。
2. public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写。所以对于Widget而言,文件的名称必须是Widget.java,而不是widget.java或WIDGET.java。如果不匹配,同样将得到编译时错误。
3. 虽然不是很常用,但编译单元内完全不带public类也是可能的。这种情况下,可以随意对文件命名。(尽管随意命名会使得人们在阅读和维护代码时产生混淆。)
一个Java文件可以有多个类作为内部类/Adapter类/其它类,但是只能有一个public类,且类名必须和文件名一致。这是这类语言的一个不好的地方。
在现实情况中,经常有一些很小的类由几个类共同需要,因此无法作为内部类,而且接口关系必须设置为public,这样就导致了大量很小的.Java程序,每个都只有几百字节。
这类语言的另一个问题是一个类的所有实现的方法都必须包含在同一个文件中。在swing应用程序中,经常导致长达一两百K字节的源程序,行数达到三四千行,搞得JBuilder奇慢无比。
一个 .java 文件,可以有多个类,但是文件名只能有一个,用哪一个类名来充当文件名呢?其实文件名是无所谓的,因为将来用 javac
进行编译的时候,最终会生成多个 .class 文件,每一个类对应个 .class 文件。运行时只要运行对应的 .class 文件就可以了,这时
.java 文件就显得没什么用了( 运行时不需要 ),那还管它叫什么名字。
但是当你的类被 public
修饰时,此时文件名必须和该类保持一致(例如 public class A{} 只能放在 A.java 文件中,不然在用 javac
编译时会提示错误:类 A 是公共的,应在名为 A.java 的文件中声明)。也就是说在同一个 .java 文件中,不应该出现2个或2个以上的
public class 。
如果有一个public class类,就应该让文件名和此类名相同;那如果没有呢,即所有的 class 都没有修饰符,那么可以给该文件随便起名字,甚至可以不和任意一个类同名,哪怕是汉字名称都可以,但是后缀还是要有.java 的 。
注:有很多初学者 ( 我也是 ) 可能会认为文件名应该也和 main 方法所在类有关系,其实不然。main
方法只是程序的一个入口,老师讲“一个程序只能有一个入口”,好象是在说只能有一个 main 方法,其实,只要你高兴,就可以在所有类里都写上
main 方法,给程序提供N多个入口,但是最后你运行程序的时候也只能从其中的一个入口进去,这就是 main 的作用( 程序入口
)。(这也就是为什么你会发现,程序员在做单元测试时,会往自己做的很多类里面添加 main
方法,因为他要为自己做的东西添加运行入口,从而能方便测试。)
转自:http://blog.163.com/frances_0123/blog/static/1841316562012229103014622/
Java中类名与文件名的关系的更多相关文章
- 计算机基础--Java中int char byte的关系
计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...
- java中接口与多重继承的关系
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...
- Java面试题:Java中的集合及其继承关系
关于集合的体系是每个人都应该烂熟于心的,尤其是对我们经常使用的List,Map的原理更该如此.这里我们看这张图即可: 1.List.Set.Map是否继承自Collection接口? List.Set ...
- java 中 热部署与卸载关系
今天发现早年在大象笔记中写的一篇笔记,之前放在ijavaboy上的,现在它已经访问不了了.前几天又有同事在讨论这个问题.这里拿来分享一下. 在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在 ...
- java中wait和notify的关系
java中,wait和notify这两个方法是一对,wait方法阻塞当前线程,而notify是唤醒被wait方法阻塞的线程. 首先,需要说明的是,wait和notify方法都是Object的实 ...
- Java的类名与文件名必须一致(转)
原文:http://blog.csdn.net/shaoxiaoning/article/details/40424087 1.Java保存的文件名必须与类名一致: 2.如果文件中只有一个类,文件名必 ...
- Java的类名与文件名必须一致
1.Java保存的文件名必须与类名一致:2.如果文件中只有一个类,文件名必须与类名一致:3.一个Java文件中只能有一个public类:4.如果文件中不止一个类,文件名必须与public类名一致:5. ...
- java中类名.class、实例.getclass()区别
import java.util.HashSet; import java.util.Iterator; /** * Created by GOD on 2016/1/23. * Class对象的生成 ...
- Java中解压文件名有中文的rar包出现乱码问题的解决
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...
随机推荐
- css的引入方法
1.外部途径: 建立xx.css文件与html文件放在同一目录下 加入 <link rel="stylesheet" type="text/css" hr ...
- Java unicode中文编码转换和反转
参考网址http://www.oschina.net/code/snippet_142385_4297 http://canofy.iteye.com/blog/718659 在java的很多配置文件 ...
- HDU 4511 (AC自动机+状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4511 题目大意:从1走到N,中间可以选择性经过某些点,比如1->N,或1->2-> ...
- JavaScript事件流
什么是JS事件流 早期的IE事件传播方向为由上至下,即从document逐级向下传播到目标元素:而Netscape公司的Netscape Navigator则是朝相反的方向传播, 也就是从目标元素开始 ...
- 转:Web前端,高性能优化
高性能HTML 一.避免使用iframe iframe也叫内联frame,可将一个HTML文档嵌入另一个HTML文档中. iframe的好处是,嵌入的文档独立于父文档,通常也借此使浏览器模拟多线程.缺 ...
- 【wikioi】1913 数字梯形问题(费用流)
http://wikioi.com/problem/1913/ 如果本题没有询问2和3,那么本题和蚯蚓那题一模一样.http://www.cnblogs.com/iwtwiioi/p/3935039. ...
- RN组件之ViewPagerAndroid
一.ViewPagerAndroid 1.一个允许在子视图之间左右翻页的容器.每一个ViewPagerAndroid的子容器会被视作一个单独的页,并且会被拉伸填满 ViewPagerAndroid.注 ...
- html5文章 -- HTML5开发实例-网易微博手机Web App开发过程
HTML5在国内外越来越受到互联网开发团队的青睐.国外,谷歌兴致勃勃地开发Chrome Web Store,微软发布了支持使用HTML5技术开发的“Irish Spring”主题网站,诺基亚斥巨资购得 ...
- 移动Web应用开发入门指南——兼容篇
兼容篇 兼容篇是我最想写的一部分,在这之前也总结过很多关于移动开发的兼容问题与解决方案.对于移动Web开发来说,兼容是开发重心,通常要花费30%甚至更多的时间去处理一些兼容问题,甚至时间花掉了,问题依 ...
- ueditor1.4.3 php版本使用修改图片上传路径
实例化编辑器必须带上一下东西 header部分 <script type="text/javascript" charset="utf-8" src=&q ...