原文: https://www.programiz.com/java-programming/anonymous-class
在本教程中,您将借助示例学习 Java 中的匿名类。
在 Java 中,一个类可以包含另一个称为嵌套类的类。 可以在不提供任何名称的情况下创建嵌套类。
没有任何名称的嵌套类称为匿名类。
必须在另一个类中定义一个匿名类。 因此,它也被称为匿名内部类。 其语法为:
class outerClass {// defining anonymous classobject1 = new Type(parameterList) {// body of the anonymous class};}
匿名类通常扩展子类或实现接口。
在这里,类型可以是
- 匿名类扩展的超类
- 匿名类实现的接口
上面的代码在运行时创建了一个匿名类的对象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 PolygonPolygon 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 interfacePolygon 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()方法时,将动态创建匿名类的对象。
匿名类也有助于我们使代码简洁。
