logo

Внутрішній клас Java Anonymous

Анонімний внутрішній клас Java — це внутрішній клас без назви, для якого створюється лише один об’єкт. Анонімний внутрішній клас може бути корисним при створенні екземпляра об’єкта з певними «додатковими можливостями», такими як перевантаження методів класу чи інтерфейсу, без необхідності фактично створювати підклас класу.

Простими словами, клас, який не має імені, відомий як анонімний внутрішній клас у Java. Його слід використовувати, якщо вам потрібно перевизначити метод класу або інтерфейсу. Внутрішній клас Java Anonymous можна створити двома способами:

  1. Клас (може бути абстрактним або конкретним).
  2. Інтерфейс

Приклад анонімного внутрішнього класу Java з використанням класу

TestAnonymousInner.java

 abstract class Person{ abstract void eat(); } class TestAnonymousInner{ public static void main(String args[]){ Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; p.eat(); } } 
Перевірте зараз

Вихід:

 nice fruits 

Внутрішня робота даного коду

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; 
  1. Клас створюється, але його ім’я визначається компілятором, який розширює клас Person і забезпечує реалізацію методу eat().
  2. Створюється об’єкт класу Anonymous, на який посилається «p», посилальна змінна типу Person.

Внутрішній клас, створений компілятором

 import java.io.PrintStream; static class TestAnonymousInner$1 extends Person { TestAnonymousInner$1(){} void eat() { System.out.println('nice fruits'); } } 

Приклад анонімного внутрішнього класу Java з використанням інтерфейсу

 interface Eatable{ void eat(); } class TestAnnonymousInner1{ public static void main(String args[]){ Eatable e=new Eatable(){ public void eat(){System.out.println('nice fruits');} }; e.eat(); } } 
Перевірте зараз

Вихід:

 nice fruits 

Внутрішня робота даного коду

За цим кодом він виконує два основні завдання:

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} }; 
  1. Клас створюється, але його ім’я визначається компілятором, який реалізує інтерфейс Eatable і забезпечує реалізацію методу eat().
  2. Створюється об’єкт класу Anonymous, на який посилається 'p', довідкова змінна типу Eatable.

Внутрішній клас, створений компілятором

 import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }