: 클래스 내부에 선언한 클래스
선언하는 이유?
외부 클래스와 밀접한 관련이 있거나, 다른 클래스와 협력할 일이 없는 경우
장점
내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근 가능,
코드의 복잡성을 줄일 수 있음
class A { // 외부 클래스
class B { // 내부 클래스
}
}
class A {
class B {
}
}
//외부 클래스 객체 생성 후 -> 내부 클래스 객체 생성
A.B b = a.new B();
class A {
static class C {
void method1() {}
static void method2() {}
}
}
//외부 클래스 객체 생성하지 않고 -> 내부 클래스 객체 생성
A.C c = new A.C();
c.method1();
c.method2(); //경고
A.C.method2(); //권장, 클래스 명으로 호출
class Local implements Readable {
@Override
public void read() {
}
}
👇 익명클래스로
//방법 1
return new Readable() {
@Override
public void read() {
}
};
//방법 2
Readable read = new Readable() {
@Override
public void read() {
}
};
return read;