Анонимные классы позволяют писать небольшой код и позволяют одновременно объявлять и создавать экземпляры класса. У этих классов нет имен, он используется, когда вы хотите использовать любой класс только один раз. Это важный аспект программирования на Java. Давайте разберемся, что такое анонимный класс в Java, в следующем порядке:
- Объявление анонимных классов
- Синтаксис анонимного класса в Java
- Способы создания анонимного класса в 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.
Есть вопрос? Укажите это в разделе комментариев этой статьи, и мы свяжемся с вами в ближайшее время.