English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массивы

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Queue (очередь)

Java Map наборы

Java Set наборы

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

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

В этом руководстве вы изучите анонимные классы в Java с помощью примеров.

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

Неназванные вложенные классы называются анонимными классами.

Анонимные классы должны определяться в рамках другого класса. Поэтому они также называются анонимными внутренними классами. Грамматика:

class outerClass {
    //Определение анонимного класса
    object1 = new Type(parameterList) {
         //Тело анонимного класса
    };
};

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

Здесь:Типом (типом)может быть

  1. 超(предок)класс, наследуемый анонимным классом

  2. Интерфейс, реализуемый анонимным классом

В этом коде в момент выполнения создается объект анонимного класса object1.

Внимание:Анонимный класс определен в выражении. Поэтому в конце анонимного класса используется точка с запятой для обозначения конца выражения.

Пример 1: анонимный внутренний класс наследует класс

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();
   };
};

Результат вывода

Внутри анонимного класса

В предыдущем примере мы создали класс Polygon. У него есть только один метод display().

Затем мы создали анонимный класс, который наследуется от класса Polygon и переопределяет метод display().

Когда мы запустим этот程序, будет создан объект анонимного класса p1. Затем этот объект вызовет метод display() анонимного класса.

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

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();
   };
};

Результат вывода

Внутри анонимного класса

В приведенном выше примере мы создали анонимный класс, реализующий интерфейс Polygon.

Преимущества анонимных классов

В анонимных классах объекты создаются по мере необходимости. То есть, объекты создаются для выполнения某些 специфических задач. Например:

Object = new Example() {
   public void display() {
      System.out.println("Анонимный класс перезаписывает метод display().");
   };
};

Здесь, когда нам нужно перезаписать метод display(), динамически создается объект анонимного класса.

Анонимные классы также помогают нам упростить код.