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읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.