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 클래스의 익명 내부 클래스 구현.운행 결과: 1, 2, 3, 4, 5.
실례 5: Runnable 인터페이스의 익명 내부 클래스 구현.운행 결과: 1, 2, 3, 4, 5.

좋은 웹페이지 즐겨찾기