这有必要制作这个java程序的两个类吗?

Til*_*Raj 6 java

将所有类代码保存为单独的.java文件是否很重要?

Outer.java,
Inner.java,
Test.java
Run Code Online (Sandbox Code Playgroud)

或者我可以将一个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();
    }
}
Run Code Online (Sandbox Code Playgroud)

lea*_*ner 2

Java 中的类anonymous class是没有名称的类,并且在一条语句中声明和实例化。每当您需要创建仅实例化一次的类时,您应该考虑使用匿名类。

\n\n

尽管匿名类可能很复杂,但匿名类声明的语法使它们最适合仅具有几个简单方法的小型类。

\n\n

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

\n\n
new interface-or-class-name() { class-body }\n
Run Code Online (Sandbox Code Playgroud)\n\n

在类主体中,您必须为接口或抽象类定义的每个抽象方法提供实现。这里\xe2\x80\x99是一个实现名为runnable的接口的示例,该接口定义了一个名为run的方法:

\n\n
runnable r = new runnable()\n    {\n        public void run()\n        {\n            //code for the run method goes here\n        }\n    };\n
Run Code Online (Sandbox Code Playgroud)\n\n

以下是有关匿名类的其他一些重要事实:

\n\n
    \n
  1. 匿名类不能有构造函数。因此,在实例化匿名类时不能将参数传递给它。

  2. \n
  3. 匿名类可以访问声明该匿名类的块中可见的任何变量,包括局部变量。

  4. \n
  5. 匿名类还可以访问包含它的类的方法。

  6. \n
\n