Java中类名与文件名的关系

一个 .java 文件,可以有多个类(最多有一个添加public修饰符,其他的类不能添加private之类的修饰符),但是文件名只能有一个,用哪一个类名来充当文件名呢?

其实文件名是无所谓的,因为将来用 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 方法,因为他要为自己做的东西添加运行入口,从而能方便测试。)

对于一个public类,它是可以被项目中任何一个类所引用的,只需在使用它前import一下它所对应的class文件即可。将类名与文件名一一对应就可以方便虚拟机在相应的路径(包名)中找到相应的类的信息。如果不这么做的话,就很难去找,而且开销也会很大。


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


问题一:如果类前面不加任何访问修饰符,则默认的访问权限是什么(可否被其它包中它的子类所访问?)
问题二:如果类成员变量前不加任何访问修饰符,其默认访问权限是什么?
问题三:如果类成员方法前不加任何访问修饰符,其默认访问权限是什么?


类、类成员没有修饰符:friendly:

只有本类和同一包中的类可以访问,其他没有访问权限


如果一个类的成员没有任何权限修饰,那么它门就是缺省包访问权限,用friendly来表示,注意friendly不是Java中的关键字,这里是个人喜欢的方式用它表示而已。同一个包内其它类可以访问,但包外就不可以。对于同一个文件夹下的、没有用package的classes,Java会自动将这些classes初见为隶属于该目录的defaultpackage,可以相互调用class中的friendly成员。如两个class分别在同一个文件夹的两个文件中,虽然没有引入package,但隶属于相同的defaultpackage。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值