Java 익명 내부 클래스 상세 정보 및 실례 코드

Java 익명 내부 클래스 상세 정보
익명 내부 클래스, 이름 없는 내부 클래스.
이름이 없기 때문에 익명 내부 클래스는 한 번만 사용할 수 있으며, 보통 코드 작성을 간소화하는 데 쓰인다
그러나 익명 내부 클래스를 사용하는 데는 또 하나의 전제 조건이 있다. 부류를 계승하거나 인터페이스를 실현해야 한다.
실례1: 익명 내부 클래스를 사용하지 않고 추상적인 방법을 실현한다

abstract class Person {
  public abstract void eat();
}
 
class Child extends Person {
  public void eat() {
    System.out.println("eat something");
  }
}
 
public class Demo {
  public static void main(String[] args) {
    Person p = new Child();
    p.eat();
  }
}
실행 결과:eat something
이를 통해 알 수 있듯이 우리는 Child로 Person 클래스를 계승한 후에 Child의 실례를 실현하여 이를 Person 클래스로 바꾸는 인용을 실현했다
그러나 이곳의 차일드 클래스를 한 번만 사용한다면 독립된 클래스로 작성하는 것은 번거롭지 않겠는가?
이때 익명 내부 클래스를 도입했어요.
실례2: 익명 내부 클래스의 기본 실현

abstract class Person {
  public abstract void eat();
}
 
public class Demo {
  public static void main(String[] args) {
    Person p = new Person() {
      public void eat() {
        System.out.println("eat something");
      }
    };
    p.eat();
  }
}
실행 결과:eat something
우리가 추상적인 클래스 Person의 방법을 대괄호 안에서 직접 실현한 것을 볼 수 있다
이렇게 하면 한 종류의 글을 생략할 수 있다
그리고 익명 내부 클래스는 인터페이스에 사용할 수 있다
실례3: 인터페이스에서 익명 내부 클래스 사용하기

interface Person
 {
  public void eat();
}
 
public class Demo
 {
  public static void main(String[]
 args) {
    Person
 p = new Person()
 {
      public void eat()
 {
        System.out.println("eat
 something");
      }
    };
    p.eat();
  }
}
실행 결과:eat something
위의 예에서 알 수 있듯이 하나의 클래스가 추상적이거나 인터페이스라면 그 하위 클래스 중의 방법은 모두 익명 내부 클래스를 사용하여 실현할 수 있다
가장 자주 사용하는 상황은 다중 스레드의 실현이다. 왜냐하면 다중 스레드를 실현하려면 Thread 클래스를 계승하거나 Runnable 인터페이스를 계승해야 하기 때문이다.
실례4:Thread 클래스의 익명 내부 클래스 구현

public class Demo
 {
  public static void main(String[]
 args) {
    Thread
 t = new Thread()
 {
      public void run()
 {
        for (int i
 = 1;
 i <= 5;
 i++) {
          System.out.print(i
 + "
 ");
        }
      }
    };
    t.start();
  }
}
실행 결과: 1 2 3 4 5
실례 5: Runnable 인터페이스의 익명 내부 클래스 구현

public class Demo {
  public static void main(String[] args) {
    Runnable r = new Runnable() {
      public void run() {
        for (int i = 1; i <= 5; i++) {
          System.out.print(i + " ");
        }
      }
    };
    Thread t = new Thread(r);
    t.start();
  }
}
실행 결과: 1 2 3 4 5
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기