이너클래스

오가람·2022년 12월 29일

정의

  • 클래스 내부에 포함된 클래스

멤버클래스

  1. 인스턴스 이너 클래스
  2. 정적 이너 클래스
  3. 지역클래스

1. 인스턴스 멤버 이너클래스

  • 특징 : 외부클래스의 모든 접근지정자의 멤버 접근 가능
  • 생성 클래스명 : A.class, A$B.class
    • 객체생성방법
      Step#1. 외부클래스 객체 생성
      Step#2. 내부클래스 객체 생성
      외부클래스 a = new 외부클래스();
      외부클래스.내부클래스 b = 외부클래스객체.new 내부클래스();
A a = new A();
A.B b = a.new B();
b.bcd();
  • 인스턴스 멤버이너 클래스는 힙메모리내의 외부클래스 객체내에 생성되기 때문에 외부 클래스 객체를 먼저 생성 하여야 함
    class A {
    	int a = 3 , b = 4;
       void abc() {
       System.out.println("A 클래스 메서드");
       }
       class B {
       	int a = 5, b = 6;
           void abc() {
           System.out.println("B 클래스 메서드");
           }
           void bcd() {
           	// #1. outer class 필드/메서드 사용
               System.out.println(a);
               System.out.println(b);
               abc();
               // #2. outer class 필드/메서드 사용
               System.out.println(A.this.a);
               System.out.println(B.this.b);
               A.this.abc();
               }
         }
    }

2. 정적 멤버 이너클래스

-특징 : 외부 클래스의 static 멤버만 접근가능 (static의 특징)

  • 생성클래스명 : A.class, A$B.class

  • 객체생성방법
    Step#1. 내부클래스 생성자로 직접 객체 생성
    외부클래스.내부클래스 a = new 외부클래스.내부클래스();

    3. 지역 이너 클래스

    -특징 :

    1. 메서드 내부에서 정의된 클래스
    2. 외부클래스의 필드는 모두 접근 가능
    3. 메서드 지역변수는 final만 사용가능
  • 생성클래스명 : A.class, A$1B.class

profile
개발자준비생

0개의 댓글