Анонімний внутрішній клас Java — це внутрішній клас без назви, для якого створюється лише один об’єкт. Анонімний внутрішній клас може бути корисним при створенні екземпляра об’єкта з певними «додатковими можливостями», такими як перевантаження методів класу чи інтерфейсу, без необхідності фактично створювати підклас класу.
Простими словами, клас, який не має імені, відомий як анонімний внутрішній клас у Java. Його слід використовувати, якщо вам потрібно перевизначити метод класу або інтерфейсу. Внутрішній клас Java Anonymous можна створити двома способами:
- Клас (може бути абстрактним або конкретним).
- Інтерфейс
Приклад анонімного внутрішнього класу 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');} };
- Клас створюється, але його ім’я визначається компілятором, який розширює клас Person і забезпечує реалізацію методу eat().
- Створюється об’єкт класу 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');} };
- Клас створюється, але його ім’я визначається компілятором, який реалізує інтерфейс Eatable і забезпечує реалізацію методу eat().
- Створюється об’єкт класу Anonymous, на який посилається 'p', довідкова змінна типу Eatable.
Внутрішній клас, створений компілятором
import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }