내부 클래스는 클래스 내에 선언된 클래스이다.
두 클래스가 서로 긴밀한 관계에 있기 때문에 선언한다.
내부 클래스의 장점
class Outer {
class InstanceInner{}
static class StaticInner{}
void myMethod() {
class LocalInner {}
}
}
// 각 내부 클래스의 선언위치에 따라 같은 선언위치의 변수와 동일한 유효범위와 접근성을 갖는다.
이름이 없다.
클래스의 선언과 객체의 생성을 동시에 하기 때문에 한번만 사용되고, 하나의 객체만을 생성하는 일회용 클래스.
class InnerEx6 {
Object iv = new Object(){ void method(){} }; //익명 클래스
static Object cv = new Object(){ void method(){} }; //익명 클래스
void myMethod() {
Object lv = new Object(){ void method(){} }; //익명 클래스
}
}
/* 이름이 없기 때문에 생성자도 가질 수 없으며, 조상클래스의 이름이나 구현하고자 하는 인터페이스의 이름을
사용해서 정의하기 때문에 하나의 클래스로 상속받는 동시에 인터페이스를 구현하거나
둘 이상의 인터페이스를 구현할 수 없다.
오로지 단 하나의 클래스를 상속받거나 단 하나의 인터페이스만을 구현할 수 있다.
*/