logo

Anonimowa klasa wewnętrzna Java

Anonimowa klasa wewnętrzna Java to klasa wewnętrzna bez nazwy, dla której tworzony jest tylko jeden obiekt. Anonimowa klasa wewnętrzna może być przydatna podczas tworzenia instancji obiektu z pewnymi „dodatkami”, takimi jak przeciążanie metod klasy lub interfejsu, bez konieczności faktycznego tworzenia podklasy.

Krótko mówiąc, klasa, która nie ma nazwy, nazywana jest w Javie anonimową klasą wewnętrzną. Należy go używać, jeśli musisz zastąpić metodę klasy lub interfejsu. Klasę wewnętrzną Java Anonymous można utworzyć na dwa sposoby:

  1. Klasa (może być abstrakcyjna lub konkretna).
  2. Interfejs

Przykład anonimowej klasy wewnętrznej Java przy użyciu klasy

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

Wyjście:

 nice fruits 

Wewnętrzne działanie zadanego kodu

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; 
  1. Tworzy się klasa, ale o jej nazwie decyduje kompilator, który rozszerza klasę Person i zapewnia implementację metody eat().
  2. Tworzony jest obiekt klasy Anonymous, do którego odwołuje się „p”, zmienna referencyjna typu Person.

Klasa wewnętrzna wygenerowana przez kompilator

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

Przykład anonimowej klasy wewnętrznej Java przy użyciu interfejsu

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

Wyjście:

 nice fruits 

Wewnętrzne działanie zadanego kodu

Wykonuje dwa główne zadania stojące za tym kodem:

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} }; 
  1. Tworzona jest klasa, ale o jej nazwie decyduje kompilator, który implementuje interfejs Eatable i zapewnia implementację metody eat().
  2. Tworzony jest obiekt klasy Anonymous, do którego odwołuje się „p”, zmienna referencyjna typu Eatable.

Klasa wewnętrzna wygenerowana przez kompilator

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