/ JAVAJUNGSUK

Ch7-42~44. 내부 클래스

자바의 정석 기초편

0. 목차



Chapter7. 객체지향 프로그래밍Ⅱ

Ch7 - 42. 내부 클래스

Ch7 - 43. 내부 클래스의 종류와 특징

Ch7 - 44. 내부 클래스의 선언



Ch7 - 42. 내부 클래스


▶ 내부 클래스란?

▷ 클래스 안의 클래스
  • 일반적 클래스
      class A {
          ...
      }
        
      class B {
          ...
      }
    
  • 내부 클래스
      class A { // B의 외부 클래스
          ...
          class B { // A의 내부 클래스
          ...
          }
      }
    

▶ 내부 클래스의 장점

▷ 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근 가능
▷ 코드의 복잡성을 감소 시킴(캡슐화)


▶ 실습

▷ 일반적 클래스 B에서 A의 멤버 i를 사용
class A {
	int i = 100;
}

class B {
	void method() {
		A a = new A();
		System.out.println(a.i);
	}
}
▷ 내부 클래스 B에서 A의 멤버 i를 사용
class A {
	int i = 100;
	
	class B {
		void method() {
			System.out.println(i); // A a = new A(); 객체 생성 필요X
		}
	}
}



Ch7 - 43. 내부 클래스의 종류와 특징


▶ 변수의 종류

▷ iv
▷ cv
▷ lv


▶ 내부 클래스의 종류

▷ 인스턴스 내부 클래스 ≒ iv
▷ 스태틱 내부 클래스 ≒ cv
▷ 지역 클래스 ≒ lv
▷ 익명 클래스 : 클래스의 선언과 객체의 생성을 동시에 하는 이름 없는 클래스(일회용)



Ch7 - 44. 내부 클래스의 선언


▶ 인스턴스 내부 클래스

▷ ≒ iv
class Outer {
  class InstanceInner {
    ...
  }
}

▶ 스태틱 내부 클래스

▷ ≒ cv(static + iv)
class Outer {
  static class StaticInner {
    ...
  }
}

▶ 지역 내부 클래스

▷ ≒ lv
class Outer {
  void method() {
    class LocalInner {
      ...
    }
  }
}