这对于生成这个java程序的两个类是必要的吗?

这对于生成这个java程序的两个类是必要的吗?,java,Java,像下面这样将所有类代码保存为单个.java文件是否重要 Outer.java, Inner.java, Test.java 或者我可以将单个java文件制作为Test.java。请解释匿名类,我们如何在java中创建匿名类,以及与普通类相比的优势/劣势是什么 class Outer { private int data = 50; class Inner { void msg() { System.out.println("Data i

像下面这样将所有类代码保存为单个.java文件是否重要

Outer.java,
Inner.java,
Test.java
或者我可以将单个java文件制作为Test.java。请解释匿名类,我们如何在java中创建匿名类,以及与普通类相比的优势/劣势是什么

class Outer {
    private int data = 50;

    class Inner {
        void msg() {
            System.out.println("Data is: " + data);
        }
    }
}

class Test {
    public static void main(String args[]) {
        Outer obj = new Outer();
        Outer.Inner in = obj.new Inner();
        in.msg();
    }
}
见:

每个Java源文件都包含一个公共类或接口。 当私有类和接口与公共类关联时 类,则可以将它们放在与公共类相同的源文件中。 公共类应该是文件中的第一个类或接口


我认为这应该回答你的问题。正如我在评论中所说,不建议编写包含几个不相关类的文件。但是,如果您有一个与文件中的公共类关联的类,则可以将它们放在同一个源文件中。

Java中的
匿名类是一个没有名称的类,在一条语句中声明和实例化。当你需要创建一个只有一次实例化的类时,你应该考虑使用匿名类。
尽管匿名类可能很复杂,但匿名类声明的语法使其最适合只有几个简单方法的小型类

匿名类必须始终实现接口或扩展抽象类。但是,您不会使用extends或implements关键字来创建匿名类。相反,您可以使用以下语法来声明和实例化匿名类:

new interface-or-class-name() { class-body }
在类主体中,必须为接口或抽象类定义的每个抽象方法提供实现。下面是一个实现名为runnable的接口的示例,该接口定义了一个名为run的方法:

runnable r = new runnable()
    {
        public void run()
        {
            //code for the run method goes here
        }
    };
以下是关于匿名类的一些其他重要事实:

  • 匿名类不能有构造函数。因此,在实例化匿名类时,不能将参数传递给该类

  • 匿名类可以访问声明匿名类的块可见的任何变量,包括局部变量

  • 匿名类还可以访问包含它的类的方法


  • 是的,你可以这样做,但应该是在小程序中,
    在大型应用程序中,您必须使类独立,Java强烈建议使类成为不同的文件,但这取决于您自己。

    对于这段小代码,您不必这样做。请记住,不建议在一个文件中包含不相关的类..将测试公开。。。最好将包含main()的类公开。在.java文件中只能有一个“public”类。。在同一个java文件中可以有1个公共类+任意数量的非公共类,我一直不明白为什么人们想把不同的类放在同一个文件中。你为什么要那样?这有什么好处?如果每个类都在一个单独的文件中,是否会产生负面影响?与此相反,其他类不必是私有的。他们不能公开。@eis这些只是惯例。