logo

Java 익명 내부 클래스

Java 익명 내부 클래스는 이름이 없고 단일 객체만 생성되는 내부 클래스입니다. 익명 내부 클래스는 실제로 클래스를 하위 클래스로 분류할 필요 없이 클래스나 인터페이스의 메서드 오버로드와 같은 특정 '추가'를 사용하여 객체의 인스턴스를 만들 때 유용할 수 있습니다.

정수를 문자열로 변환 java

간단히 말해서 이름이 없는 클래스를 Java에서는 익명 내부 클래스라고 합니다. 클래스나 인터페이스의 메서드를 재정의해야 하는 경우 사용해야 합니다. Java 익명 내부 클래스는 두 가지 방법으로 생성할 수 있습니다.

  1. 클래스(추상적이거나 구체적일 수 있음).
  2. 상호 작용

클래스를 사용하는 Java 익명 내부 클래스 예

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(); } } 
지금 테스트해보세요

산출:

자바 배열에 추가
 nice fruits 

주어진 코드의 내부 작업

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; 
  1. 클래스가 생성되지만 해당 이름은 Person 클래스를 확장하고 eat() 메서드 구현을 제공하는 컴파일러에 의해 결정됩니다.
  2. Person 유형의 참조 변수인 'p'가 참조하는 Anonymous 클래스의 객체가 생성됩니다.

컴파일러가 생성한 내부 클래스

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

인터페이스를 사용하는 Java 익명 내부 클래스 예

 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(); } } 
지금 테스트해보세요

산출:

 nice fruits 

주어진 코드의 내부 작업

이 코드 뒤에는 두 가지 주요 작업이 수행됩니다.

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} }; 
  1. 클래스가 생성되지만 해당 이름은 Eatable 인터페이스를 구현하고 eat() 메서드 구현을 제공하는 컴파일러에 의해 결정됩니다.
  2. Eatable 유형의 참조 변수인 'p'에 의해 참조되는 Anonymous 클래스의 객체가 생성됩니다.

컴파일러가 생성한 내부 클래스

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