본문 바로가기

프로그래밍/JAVA

[JAVA] 내부 클래스(inner class)


1. 내부클래스(inner class)


클래스 내에 선언된 클래스 (서로 긴밀한 관계가 있음)


장점 : 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있음

        코드의 복잡성을 줄일 수 있음(캡슐화)


2. 내부클래스 종류와 특징


변수의 선언위치에 따라 // 인스턴스 변수, 클래스 변수, 지역변수로 나누는 것처럼

클래스의 선언위치에 따라 // 인스턴스 클래스, 스태틱 클래스, 지역 클래스, 익명 클래스로 나뉜다.


3. 내부클래스의 선언


class Outer {
class InstanceInner {} // 인스턴스 클래스
static class StaticInner {} // 스태틱 클래스

void myMethod(){
class LocalInner {} // 지역 클래스
}
}



4. 내부클래스의 제어자와 접근성


인스턴스(Instance) 클래스와 스태틱(Static) 클래스는 외부클래스의 멤버변수와 같은 위치에 선언된다.



5. 익명클래스(anonymous class)


클래스에 이름이 없다.

클래스의 선언과 객체의 생성을 동시에 하기 때문에 한번만 사용될 수 있다. (일회용 클래스)



new 조상클래스 이름 () {
//     멤버변수 선언     //
}

또는

new 구현 인터페이스 이름 () { //     멤버변수 선언     //

}



이름이 없기 때문에 생성자도 없다.