我有一个文件Test.java
和里面的代码.
public class Abcd
{
//some code here
}
Run Code Online (Sandbox Code Playgroud)
现在这个类没有编译,但是当我删除public
修饰符时,它编译得很好.
Java背后的原因是什么允许我们在不公开时编译与文件名不同的类名.
我知道这是一个新手问题,但我无法找到一个好的解释.
Mar*_*nik 323
理由是每个.java
文件允许多个顶级类.
许多类(如事件侦听器)仅供本地使用,最早的Java版本不支持嵌套类.如果没有"文件名=类名"规则的放宽,每个这样的类都需要自己的文件,不可避免的结果是小.java
文件的无限扩散和紧密耦合的代码的分散.
一旦Java引入了嵌套类,这条规则的重要性就会大大降低.今天,您可以浏览数百个Java文件,而不会利用它来利用它.
exe*_*ook 79
原因与门板相同.如果某人正式居住在办公室(公开宣布),他/她的名字必须在门牌上.像"亚历克斯琼斯"或"侦探科伦坡".如果有人只是去房间,与官员交谈或清理地板,他们的名字不一定要正式上门.相反,门可以读作"公用事业"或"会议室".
And*_*san 29
Java规范声明每个文件最多只能有一个公共类.在这种情况下,类名应与文件名匹配.无论文件名是什么,都允许所有非公共类具有任何名称.
Jos*_*non 13
我认为允许它们是嵌套类的先决条件.特别是匿名类可以显着减少所需的.java文件数量.如果不支持这一点,你需要在他们自己使用的主类的独立文件中进行大量的单一方法接口实现.(我特别想到动作监听器)
Oracle网站上的嵌套类 Java教程中对所有嵌套类有一个很好的解释,其中包含每个嵌套类的示例.它也有一个有用的原因,我将引用它:
为什么使用嵌套类?
使用嵌套类的令人信服的理由包括:
它是一种逻辑分组仅在一个地方使用的类的方法:如果一个类只对另一个类有用,那么将它嵌入该类并将两者保持在一起是合乎逻辑的.嵌套这样的"帮助类"使得它们的包更加简化.
它增加了封装:考虑两个顶级类A和B,其中B需要访问A的成员,否则这些成员将被声明为私有.通过将类B隐藏在类A中,可以将A的成员声明为私有,并且B可以访问它们.另外,B本身可以隐藏在外面.
它可以带来更易读和可维护的代码:在顶级类中嵌套小类会使代码更接近于使用它的位置.
(强调我的)
早期我不熟悉Java规范,但快速搜索显示Java 1.1中添加了内部类.
归档时间: |
|
查看次数: |
7731 次 |
最近记录: |