Рубрики
Без рубрики

Анонимный класс Java

Пример анонимного класса Java. Анонимный класс в примере Java. Анонимный внутренний класс. Анонимный локальный класс в java, пример анонимного вложенного класса.

Автор оригинала: Pankaj Kumar.

Анонимный класс Java подобен локальному классу или внутреннему классу без имени. Мы можем использовать анонимный класс java для одновременного объявления и создания экземпляра класса.

Анонимный класс Java

Анонимный класс Java – это вложенный или локальный класс. Вы должны использовать их только в том случае, если хотите использовать локальный класс только один раз. Давайте рассмотрим пример анонимного класса в программе java.

package com.journaldev.java.examples;

public interface Hello {

	public void sayHello();
}

Пример анонимного класса Java

Hello – это интерфейс, давайте посмотрим, как мы можем создать анонимную реализацию класса интерфейса Hello.

package com.journaldev.java.examples;

public class AnonymousExample {

	//nested anonymous class
	public static Hello hello = new Hello() {

		@Override
		public void sayHello() {
			System.out.println("Hello nested anonymous class");
		}
	};
	
	public static void main(String[] args) {
		
		//anonymous class inside method
		Hello h = new Hello() {

			@Override
			public void sayHello() {
				System.out.println("Hello anonymous class");
			}
		};
		
		h.sayHello();
		
		AnonymousExample.hello.sayHello();
	}

}

Над классом Hello также может быть абстрактный класс, как показано ниже.

package com.journaldev.java.examples;

public abstract class Hello {

	abstract void sayHello();
}

Мало того, Hello также может быть обычным классом высшего уровня, как показано ниже.

package com.journaldev.java.examples;

public class Hello {

	public void sayHello(){};
}

Обратите внимание, что анонимные классы являются выражениями и заканчиваются точкой с запятой.

Анонимный класс определяется путем вызова конструктора класса, за которым следует код определения класса в фигурных скобках.

Поскольку у анонимного класса нет имени, мы не можем определить конструктор внутри тела кода класса.

Пример анонимного класса Java с аргументом конструктора

Что делать, если в нашем классе Hello нет конструктора без аргументов? Можем ли мы получить доступ к переменным класса в анонимном классе? Нужно ли нам переопределять все методы класса в анонимном классе?

Давайте ответим на вышеприведенные вопросы простым примером кода.

package com.journaldev.java.examples;

public class Hello {

	protected String s;
	
	public Hello(String str){
		this.s = str;
	}
	public void sayHello(){
		System.out.println(s);
	};
	
	void foo(){};
}
package com.journaldev.java.examples;

public class AnonymousExample {
	
	public static void main(String[] args) {
		
		//anonymous class inside method
		Hello h = new Hello("abc") {

			@Override
			public void sayHello() {
				System.out.println("Hello anonymous class "+s);
			}
		};
		
		h.sayHello();
		
	}

}

Важные моменты анонимного класса Java

  1. Мы можем использовать любой конструктор при создании анонимного класса. Обратите внимание, что аргумент конструктора используется для.
  2. Анонимный класс расширяет класс верхнего уровня и реализует абстрактный класс или интерфейс. Таким образом, правила модификатора доступа применяются как обычно. Мы можем получить доступ к защищенной переменной, если мы изменим ее на закрытую, то мы не сможем получить к ней доступ.
  3. Поскольку мы расширяем класс Hello выше, нам не требуется переопределять все методы. Однако, если бы это был интерфейс или абстрактный класс, мы должны были бы обеспечить реализацию всех нереализованных методов.
  4. Вы не можете объявлять статические инициализаторы или интерфейсы-члены в анонимном классе.
  5. Анонимный класс может иметь статические члены при условии, что они являются постоянными переменными.

Это все для анонимного класса на java.