【问题标题】:Java classes written outside of class brackets在类括号之外编写的 Java 类
【发布时间】:2016-04-06 03:26:40
【问题描述】:

我很困惑这在 Java 中被称为什么以及它的作用:

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

    }//end SampleMenuListener

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

【问题讨论】:

  • 如果class 不必是public,则可以将其写入正在使用的文件中。与 Eclipse 或任何 IDE 无关。

标签: java eclipse class


【解决方案1】:

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

其他的必须是包访问(没有访问说明符)。见the relevant documentation.

在您的示例中,SampleMenuListener 只是一个 class,就像任何其他的一样。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 不是一个超级类。另一个类没有扩展它。
    • 我已经更新了我的答案,我在普通类的上下文中告诉 super 可以根据可见性在任何地方用作超级
    猜你喜欢
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2013-06-27
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多