내부 클래스 (inner class)

essential·2023년 8월 28일

객체 지향

목록 보기
38/40

내부 클래스 (inner class)

  • 클래스 안의 클래스
class A { //B의 외부 클래스 
	class B { //A의 내부 클래스
	//객체 생성 없이도 A의 멤버 접근 가능
	}
}
  • 내부 클래스의 장점
    • 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
    • 코드의 복잡성을 줄일 수 있다.(캡슐화)

예제

class A { // A는 B의 외부 클래스
	int i = 100;
	B b = new B();

	class B { // B는 A의 내부 클래스
		void method() {
			A a = new A():
			System.out.println(a.i);
			System.out.println(i);  //객체 생성 없이 외부 클래스의 멤버 접근 가능

		}
	}
}

class C { // B 못 씀 
	B b = new B();
}

public class InnerTest {
	public static void main(String[] args) {
			B b = new B();
			b.method();
	}
}

내부 클래스의 종류와 특징

  • 내부 클래스의 종류와 유효범위(scope)는 변수와 동일
내부 클래스특징
인스턴스 내부 클래스(instance class)외부 클래스의 멤버 변수 선언위치에 선언하며, 외부 클래스의 인스턴스 멤버처럼 다루어진다. 주로 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용될 목적으로 선언된다.
스태틱 내부 클래스(static class)외부 클래스의 멤버 변수 선언 위치에 선언하며, 외부 클래스의 static 멤버처럼 다루어진다. 주로 외부 클래스의 static 멤버, 특히 static 메서드에서 사용될 목적으로 선언된다.
지역 내부 클래스(local class)외부 클래스의 메서드나 초기화 블럭 안에 선언하며, 선언된 영역 내부에서만 사용될 수 있다.
익명 내부 클래스(anonymous class)클래스의 선언과 객체의 생성을 동시에 하는 이름 없는 클래스(일회용)
profile
essential

0개의 댓글