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.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.