Java에서 익명 클래스를 구현하는 방법



이 블로그는 Java의 익명 클래스에 대한 상세하고 포괄적 인 지식과 예제 및 일반 클래스와의 차이점을 제공합니다.

익명 클래스를 사용하면 작은 코드를 작성하고 동시에 클래스를 선언하고 인스턴스화 할 수 있습니다. 이 클래스에는 이름이 없으며 클래스를 한 번만 사용하려는 경우에 사용됩니다. Java 프로그래밍의 중요한 측면입니다. 다음 순서로 Java에서 익명 클래스가 무엇인지 이해하겠습니다.

익명 클래스 선언





일반적으로 클래스를 생성합니다. 즉, 클래스를 선언하지만 익명 클래스는 다른 클래스에서 익명 클래스를 정의하는 표현식입니다. 표현 . 간단히 말해서 익명의 내부 클래스는 이름이없는 클래스이며 하나의 객체 만 생성됩니다.

Anonymous-Class-In-Java



익명 클래스는 클래스의 하위 클래스를 만들지 않고 클래스 또는 인터페이스의 메서드를 오버로딩하여 개체의 인스턴스를 만들어야 할 때 유용합니다.

파이썬으로 인쇄되는 것

익명은 두 가지 방법으로 만들 수 있습니다.

  • 클래스 (추상적 일 수도 있음)
  • 상호 작용

익명 클래스에서 다음을 선언 할 수 있습니다.



  • 필드
  • 추가 방법
  • 인스턴스 이니셜 라이저
  • 지역 수업

자바의 익명 클래스 구문

익명 클래스의 구문은 아래 스 니펫에 표시된대로 블록에 클래스 정의가 있다는 점을 제외하면 생성자와 같습니다.

// AnonymousClass = interface, abstract / concrete 클래스. AnonymousClass t = new AnonymousClass () {// 메서드 및 필드 public void someMethod () {// 여기에 코드 입력}}

다음 예를 살펴 보겠습니다.

다음 예는HelloAnonymousClass, 지역 변수의 초기화 문에서 익명 클래스를 사용합니다.누군가에게 인사하다하지만 변수 초기화를 위해 로컬 클래스를 사용합니다.greetWorld:

public class HelloAnonymousClass {interface HelloWorld {public void sayHello () public void sayHelloTo (String someone)} public void sayHello () {class GreetWorld implementations HelloWorld {String name = 'world'public void sayHello () {sayHelloTo ( 'world')} public void sayHelloTo (String someone) {name = someone 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 someone) {name = someone 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 someone) {name = someone System.out.println ( 'hola'+ name) }}

익명 클래스는 다음으로 구성됩니다.

  • 새로운 연산자.
  • 인터페이스를 구현하거나 클래스를 확장 할 수 있습니다. 위의 예에서와 같이 인터페이스를 구현하고 있습니다.
  • 생성자에 인수를 전달하기 위해 일반 클래스와 마찬가지로 괄호를 포함합니다.
  • 메서드 선언을 포함하는 본문을 포함합니다. 선언은 허용되지 않습니다.

익명 클래스는 명령문의 일부 여야합니다.

위의 예에서 익명의 클래스 표현식은 다음에 의해 시작되는 명령문의 일부입니다.누군가에게 인사하다.

Java에서 익명 클래스를 만드는 방법

자바에서 내부 클래스를 만드는 방법은 3 가지가 있습니다.

  • 클래스 확장으로

다른 클래스를 확장하여 익명 내부 클래스를 만들 수 있습니다. Thread 클래스를 사용하여 스레드를 만들어야한다고 가정하면 별도의 클래스를 만드는 대신 익명 내부 클래스를 만들 수 있습니다.

// 다른 클래스를 확장하여 Anonymous Inner 클래스를 설명하는 프로그램 class AnonymousThreadClass {public static void main (String [] args) {// Thread를 확장하는 Anonymous Inner 클래스 class Thread t = new Thread () {public void run () {System .out.println ( 'Child!')}} t.start () System.out.println ( 'Parent!')}}

산출:

부모의!

아이!

  • 인터페이스 구현

인터페이스를 구현하여 익명의 내부 클래스를 만들 수도 있습니다. 이제 비슷하게 클래스를 확장하여 내부 클래스를 만들었으므로 인터페이스를 구현하는 클래스를 만들 수 있습니다.

// 인터페이스를 구현하여 Anonymous Inner 클래스를 설명하는 프로그램 class AnonymousThreadClass {public static void main (String [] args) {// 인터페이스를 구현하는 Anonymous Inner 클래스 Runnable r = new Runnable () {public void run () {System.out .println ( 'Child!')}} 스레드 t = new Thread (r) t.start () System.out.println ( 'Parent!')}}

산출:

부모의!

아이!

  • 메서드 / 생성자에 대한 인수로

구문을 이해하려면 아래 예제를 살펴보십시오.

// 인수로 익명 내부 클래스를 설명하는 프로그램 class AnonymousThreadClass {public static void main (String [] args) {// 생성자 인수가있는 익명 클래스 Thread t = new Thread (new Runnable () {public void run () {System. out.println ( 'Child!')}}) t.start () System.out.println ( 'Parent!')}}

산출:

부모의!

아이!

확장과 구현의 차이점

일반 내부 클래스와 익명 내부 클래스의 차이점

  • 우리는 구현할 수 있습니다 여러 개의 인터페이스 일반 클래스를 사용하지만 익명의 내부 클래스를 사용하면 하나의 인터페이스 만 구현할 수 있습니다.

  • 정규 수업을 통해 우리는 수업을 연장하다 또한 여러 인터페이스를 구현하지만 익명의 내부 클래스를 사용하면 클래스를 확장하거나 인터페이스를 구현할 수 있지만 동시에 둘 다 구현할 수는 없습니다.

  • 익명으로 우리 생성자를 쓸 수 없습니다 익명 내부 클래스에는 이름이 없기 때문에 생성자의 이름은 클래스 이름과 동일해야합니다.

이 기사에서는 익명의 내부 클래스가 무엇이며 어떻게 생성 할 수 있는지 살펴 보았습니다. 익명의 내부 클래스의 구문과 익명의 클래스를 3 가지 방법으로 만드는 방법을 살펴 보았습니다. 이것으로이 Anonymous Class in Java 기사의 끝으로 왔습니다. 확인 에듀 레카.

질문이 있습니까? 이 기사의 댓글 섹션에서 언급하시면 최대한 빨리 답변을 드리겠습니다.