Анонимные классы Java

Объекты и классы Java

В Java класс может содержать другой класс и создаваться напрямую без указания имени класса.

В основном он используется для создания объекта, выполняющего конкретную задачу при необходимости, что делает код более кратким.

Анонимные классы — это классы, которые не могут иметь имён. На них нельзя ссылаться, и они могут использоваться только во время создания с помощьюnewоператора для их объявления.

Формат синтаксиса анонимного класса:

class outerClass {

    // 定义一个匿名类
    object1 = new Type(parameterList) {
         // 匿名类代码
    };
}

Приведённый выше код создаёт объект анонимного класса object1. Анонимный класс определяется как выражение, поэтому в конце ставится точка с запятой;для завершения.

Анонимные классы обычно наследуют родительский класс или реализуют интерфейс.

Анонимный класс, наследующий родительский класс

В следующем примере создаётся класс Polygon. Этот класс имеет только один метод — display(). Класс AnonymousDemo наследует класс Polygon и переопределяет его метод display():

Пример

class Polygon {
   public void display() {
      System.out.println("Внутри класса Polygon");
   }
}

class AnonymousDemo {
   public void createClass() {

      // Созданный анонимный класс наследует класс Polygon
      Polygon p1 = new Polygon() {
         public void display() {
            System.out.println("Внутри анонимного класса.");
         }
      };
      p1.display();
   }
}

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

При выполнении приведённого выше кода создаётся объект p1 анонимного класса. Этот объект вызывает метод display() анонимного класса, и вывод будет:

Inside an anonymous class.

Анонимный класс, реализующий интерфейс

В следующем примере создаётся анонимный класс, реализующий интерфейс Polygon:

Пример

interface Polygon {
   public void display();
}

class AnonymousDemo {
   public void createClass() {

      // Анонимный класс реализует интерфейс
      Polygon p1 = new Polygon() {
         public void display() {
            System.out.println("Внутри анонимного класса.");
         }
      };
      p1.display();
   }
}

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

Вывод:

Inside an anonymous class.

Объекты и классы Java

Другие расширения