В този урок ще научите за анонимните класове в Java с помощта на примери.
В Java клас може да съдържа друг клас, известен като вложен клас. Възможно е да създадете вложен клас, без да давате никакво име.
Вложен клас, който няма никакво име, е известен като анонимен клас.
Анонимен клас трябва да бъде дефиниран в друг клас. Следователно той е известен и като анонимен вътрешен клас. Синтаксисът му е:
class outerClass ( // defining anonymous class object1 = new Type(parameterList) ( // body of the anonymous class ); )
Анонимните класове обикновено разширяват подкласовете или изпълняват интерфейси.
Тук Type може да бъде
- суперклас, който се разширява анонимен клас
- интерфейс, който прилага анонимен клас
Горният код създава обект object1
от анонимен клас по време на изпълнение.
Забележка: Анонимните класове са дефинирани в израз. И така, точката с запетая се използва в края на анонимните класове, за да посочи края на израза.
Пример 1: Анонимен клас, удължаващ клас
class Polygon ( public void display() ( System.out.println("Inside the Polygon class"); ) ) class AnonymousDemo ( public void createClass() ( // creation of anonymous class extending class Polygon Polygon p1 = new Polygon() ( public void display() ( System.out.println("Inside an anonymous class."); ) ); p1.display(); ) ) class Main ( public static void main(String() args) ( AnonymousDemo an = new AnonymousDemo(); an.createClass(); ) )
Изход
Вътре в анонимен клас.
В горния пример създадохме клас Полигон. Той има един метод display()
.
След това създадохме анонимен клас, който разширява класа Полигон и замества display()
метода.
Когато стартираме програмата, се създава обект p1 от анонимния клас. След това обектът извиква display()
метода на анонимния клас.
Пример 2: Анонимен клас, реализиращ интерфейс
interface Polygon ( public void display(); ) class AnonymousDemo ( public void createClass() ( // anonymous class implementing interface Polygon p1 = new Polygon() ( public void display() ( System.out.println("Inside an anonymous class."); ) ); 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("Anonymous class overrides the method display()."); ) );
Тук обект от анонимния клас се създава динамично, когато трябва да заменим display()
метода.
Анонимните класове също ни помагат да направим нашия код кратък.