JAVA

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

ewok 2023. 3. 8. 15:45

내부 클래스

  • 클래스 내에 선언된 클래스
  • 특정 클래스 내에서만 주로 사용되는 클래스를 내부 클래스로 선언한다.
class A {	// 외부클래스
	...
    class B {	// 내부클래스
        ...
    }
    ...
}

내부 클래스의 장점

  1. 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
  2. 코드의 복잡성을 줄일 수 있다.(캡슐화)

 

 

내부 클래스의 종류와 특징

내부 클래스의 종류는 변수의 선언위치에 따른 종류와 같다.

 

 

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

  • 내부 클래스의 접근 제어자는 멤버변수에 사용할 수 있는 접근 제어자와 동일하다.
  • static 클래스만 static 멤버를 정의할 수 있다.
  • 내부 클래스도 외부 클래스의 멤버로 간주되며, 동일한 접근성을 갖는다.
  • 외부 클래스의 지역변수는 final이 붙은 변수(상수)만 접근 가능하다.

 

 

익명 클래스

이름이 없는 일회용 클래스

 

클래스의 선언과 객체의 생성을 동시에 하기 때문에 한 번만 사용될 수 있고, 단 하나의 객체만을 생성할 수 있다.

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

또는

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

 

class InnerEx6 {
	Object iv = new Object(){ void method(){} };		// 익명클래스
	static Object cv = new Object(){ void method(){} };	// 익명클래스

	void myMethod() {
		Object lv = new Object(){ void method(){} };	// 익명클래스
	}
}