Как реализовать анонимный класс в Java



Этот блог предоставит вам подробные и всесторонние знания об анонимном классе в Java с примерами и его отличиями от обычного класса.

Анонимные классы позволяют писать небольшой код и позволяют одновременно объявлять и создавать экземпляры класса. У этих классов нет имен, он используется, когда вы хотите использовать любой класс только один раз. Это важный аспект программирования на Java. Давайте разберемся, что такое анонимный класс в Java, в следующем порядке:

Объявление анонимных классов





Обычно мы создаем класс, т.е. мы объявляем класс, но анонимные классы - это выражения, что означает, что мы определяем анонимный класс в другом выражение . Проще говоря, анонимный внутренний класс - это класс без имен, и создается только один объект.

Anonymous-Class-In-Java



Анонимный класс полезен, когда нам нужно создать экземпляр объекта с методами перегрузки класса или интерфейса без создания подкласса класса.

Анонимный можно создать двумя способами:

  • Класс (также может быть абстрактным)
  • Интерфейс

В анонимном классе мы можем объявить следующее:



магистр, аспирантура
  • Поля
  • Дополнительные методы
  • Инициализаторы экземпляров
  • Местные классы

Синтаксис анонимного класса в Java

Синтаксис анонимного класса такой же, как у конструктора, за исключением того, что в блоке есть определение класса, как показано во фрагменте ниже:

// AnonymousClass = интерфейс, абстрактный / конкретный класс. AnonymousClass t = new AnonymousClass () {// методы и поля public void someMethod () {// здесь идет код}}

Давайте посмотрим на следующий пример:

Следующий пример,HelloAnonymousClass, использует анонимные классы в операторах инициализации локальных переменныхпоприветствовать кого-тоно использует локальный класс для инициализации переменнойgreetWorld:

public class HelloAnonymousClass {interface HelloWorld {public void sayHello () public void sayHelloTo (String something)} public void sayHello () {class GreetWorld реализует HelloWorld {String name = 'world' public void sayHello () {sayHelloTo ('world')} public void sayHelloTo (String something) {name = something System.out.println ('Hello' + name)}} HelloWorld greetWorld = new GreetWorld () HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello ( ) {sayHelloTo ('Jon')} public void sayHelloTo (String something) {name = something System.out.println ('hola' + name)}} greetWorld.sayHello () greetSomeone.sayHelloTo ('Doe')} public static void main (String ... args) {HelloAnonymousClass myApp = new HelloAnonymousClass () myApp.sayHello ()}}

Как мы видели, анонимный класс - это выражение, синтаксис которого аналогичен конструктору, за исключением того, что в блоке есть определение класса. Рассмотрим создание объекта greetSomeone:

HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello () {sayHelloTo ('Jon')} public void sayHelloTo (String something) {name = something System.out.println ('hola' + name) }}

Анонимный класс состоит из следующего:

  • новый оператор.
  • Он может реализовать интерфейс или расширить класс. Как и в приведенном выше примере, он реализует интерфейс.
  • Он содержит круглые скобки, как и обычные классы, для передачи аргументов конструктору.
  • Содержит тело, которое содержит объявления методов. Заявления не допускаются.

Анонимный класс должен быть частью операторов.

В приведенном выше примере выражение анонимного класса является частью оператора, который инициируетсяпоприветствовать кого-то.

Способы создания анонимного класса в Java

Есть 3 способа создать внутренний класс в Java

  • Расширяя класс

Мы можем создать анонимный внутренний класс, расширив другой класс, предположим, что нам нужно создать поток с помощью класса Thread, мы можем создать анонимный внутренний класс вместо создания отдельного класса.

// Программа для иллюстрации анонимного внутреннего класса путем расширения другого класса класса AnonymousThreadClass {public static void main (String [] args) {// Анонимный внутренний класс, который расширяет класс Thread Thread t = new Thread () {public void run () {System .out.println ('Ребенок!')}} t.start () System.out.println ('Родитель!')}}

Вывод:

Родитель!

Дитя!

  • Путем реализации интерфейса

Мы также можем создать анонимный внутренний класс, реализовав интерфейс. Теперь, когда мы создали внутренний класс, расширив класс аналогичным образом, мы можем создать класс, реализующий интерфейс.

// Программа для иллюстрации внутреннего анонимного класса путем реализации класса интерфейса AnonymousThreadClass {public static void main (String [] args) {// Анонимный внутренний класс, который реализует интерфейс Runnable r = new Runnable () {public void run () {System.out .println ('Child!')}} Thread t = new Thread (r) t.start () System.out.println ('Родитель!')}}

Вывод:

Родитель!

Дитя!

  • Как аргумент для метода / конструктора

Чтобы понять синтаксис, давайте посмотрим на пример ниже:

// Программа для иллюстрации анонимного внутреннего класса с помощью класса аргументов AnonymousThreadClass {public static void main (String [] args) {// Анонимный класс с аргументом конструктора Thread t = new Thread (new Runnable () {public void run () {System. out.println ('Ребенок!')}}) t.start () System.out.println ('Родитель!')}}

Вывод:

Родитель!

Дитя!

Разница между обычным и анонимным внутренним классом

  • Мы можем реализовать множественное количество интерфейсов используя обычный класс, но с анонимным внутренним классом мы можем реализовать только один интерфейс.

  • С обычным классом мы можем расширить класс а также реализовать несколько интерфейсов, но с анонимным внутренним классом мы можем либо расширить класс, либо реализовать интерфейс, но не оба одновременно.

    как установить php на windows
  • С анонимом мы не могу написать конструктор поскольку у анонимного внутреннего класса нет имени, а имя конструктора должно совпадать с именем класса.

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

Есть вопрос? Укажите это в разделе комментариев этой статьи, и мы свяжемся с вами в ближайшее время.