Java 匿名类

在Java中,一个类可以包含另一个类,称为嵌套类。可以创建一个没有名称的嵌套类。

没有名称的嵌套类称为匿名类。

匿名类必须定义在另一个类中。因此,它也称为匿名内部类。其语法是

class outerClass {

    // defining anonymous class
    object1 = new Type(parameterList) {
         // body of the anonymous class
    };
}

匿名类通常扩展子类或实现接口。

在这里,Type可以是

  1. 匿名类扩展的超类
  2. 匿名类实现的接口

上面的代码在运行时创建了一个匿名类对象object1

注意:匿名类定义在表达式中。因此,在匿名类末尾使用分号来表示表达式的结束。


示例 1:扩展类的匿名类

class Polygon {
   public void display() {
      System.out.println("Inside the Polygon class");
   }
}

class AnonymousDemo {
   public void createClass() {

      // creation of anonymous class extending class Polygon
      Polygon p1 = new Polygon() {
         public void display() {
            System.out.println("Inside an anonymous class.");
         }
      };
      p1.display();
   }
}

class Main {
   public static void main(String[] args) {
       AnonymousDemo an = new AnonymousDemo();
       an.createClass();
   }
}

输出

Inside an anonymous class.

在上面的示例中,我们创建了一个名为Polygon的类。它有一个名为display()的方法。

然后,我们创建了一个扩展Polygon类并覆盖display()方法的匿名类。

当我们运行程序时,会创建一个匿名类的对象p1。然后该对象调用匿名类的display()方法。


示例 2:实现接口的匿名类

interface Polygon {
   public void display();
}

class AnonymousDemo {
   public void createClass() {

      // anonymous class implementing interface
      Polygon p1 = new Polygon() {
         public void display() {
            System.out.println("Inside an anonymous class.");
         }
      };
      p1.display();
   }
}

class Main {
   public static void main(String[] args) {
      AnonymousDemo an = new AnonymousDemo();
      an.createClass();
   }
}

输出

Inside an anonymous class.

在上面的示例中,我们创建了一个实现Polygon接口的匿名类。


匿名类的优点

在匿名类中,对象在需要时创建。也就是说,创建对象是为了执行一些特定的任务。例如,

Object = new Example() {
   public void display() {
      System.out.println("Anonymous class overrides the method display().");
   }
};

在这里,当我们需要覆盖display()方法时,会动态创建一个匿名类的对象。

匿名类还有助于使我们的代码更简洁。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战