在类括号外编写的Java类

在类括号外编写的Java类,java,eclipse,class,Java,Eclipse,Class,我不清楚这在Java中被称为什么以及它的作用: public class MainFrame(){ public static void main(String[] args{ //etc. } }//end class class SampleMenuListener implements MenuListener(){ }//end SampleMenuListener 我研究了内部类,知道如

我不清楚这在Java中被称为什么以及它的作用:

    public class MainFrame(){
        public static void main(String[] args{
            //etc.
        }    
    }//end class
    class SampleMenuListener implements MenuListener(){

    }//end SampleMenuListener

我研究了内部类,知道如何使用匿名内部类,但我知道这不是一个,在谷歌搜索之后,我无法弄清楚这在Java中被称为什么。我的问题是这叫什么?在Eclipse中,类C显示在类SampleMenuListener的旁边。那么,这与在同一个项目文件夹中创建一个名为SampleMenuListener的新类并在大型机中创建它的实例本质上是一样的吗?如果是这样的话,这仅仅是编写另一个类而不在eclipse中使其分离的一种简捷方法吗?或者它有什么不同,又有什么不同?当然可以随意发布链接,因为这可能是一个愚蠢的问题,但正如我所说的,我似乎无法通过谷歌搜索正确的关键字来获得Java中的结果。

这是一个普通类,它只是在同一个.Java文件中编写的。
唯一的区别是只允许一个公共类(因为文件名需要与公共类的名称相同)

通常,我们喜欢说Java每个代码文件只能有一个类,并且源文件必须为该类命名。这并不完全正确。实际的规则是每个代码文件只能有一个公共类。您可以拥有任意数量(但请不要…),只要其中不超过一个是
公共的

其他必须是包访问(无访问说明符)。看


在您的示例中,
SampleMenuListener
与其他类一样只是一个
类。

如果
不需要是
公共的
,则可以将其写入使用它的文件中。不考虑Eclipse或任何IDE。不是真正的超级类。另一个类没有扩展它。我已经更新了我的答案,我告诉super在普通类的上下文中,可以在任何基于可见性的地方用作super