불로구

29강. (JAVA) 자바 - 중첩 클래스 본문

프로그래밍/JAVA

29강. (JAVA) 자바 - 중첩 클래스

맹이맹이 2020. 6. 30. 23:20
반응형

중첩 클래스

- 클래스 내부에 선언한 클래스

장점

- 두 클래스의 멤버들을 서로 쉽게 접근할 수 있다.

- 외부에는 불필요한 관계 클래스를 감춤으로써, 코드 복잡성 줄임

중첩 클래스 외에도 중첩 인터페이스도 생성할 수 있다.

1) 중첩 클래스

class A{
   class B{
   }
}

 

2) 중첩 인터페이스

class A{
   interface B{
   }
}

 

중첩 클래스의 종류

1) 멤버 클래스

1.1) 인스턴스 멤버 클래스

class A{
  class B{ //A객체를 생성해야만 B클래스를 사용할 수 있다.
    B();
    int age;
    void run(){}  
    // static 정적 사용 불가
  }

}

A a = new A();
A.B b = new a.new B();
b.age = 25;
b.run();

 

A 클래스 외부에서 B 객체를 생성하려면 A 객체를 먼저 생성하고 B 객체를 생성해야 한다.

A 클래스 내부의 생성자 및 인스턴스 메서드에서 일반 클래스처럼 B 객체를 생성 가능하다!

1.2) 정적 멤버 클래스

class A{
   static class B{...} // A클래스를 이용해 B클래스에 바로 접근가능
}

정적 멤버 클래스는 static 키워드로 선언된 클래스다.

정적 멤버 클래스는 모든 종류의 필드와 메서드 선언이 가능하다.

A 클래스 외부에서 정적 멤버 클래스 B의 객체를 생성하기 위해선 A 객체의 생성이 없이 사진처럼 B 객체를 생성하면 된다!

2) 로컬 클래스

class A{
  void method() {
     class B{ .. } //method가 실행할 때만 사용할 수 있다.
  }
}

 

중첩 클래스는 메서드 내에서도 선언이 가능한데 이것을 로컬 클래스라고 한다.

로컬 클래스도 public, private, static을 붙일 수 없다.

로컬 클래스는 메서드 내부에서만 사용되므로 접근 제한이 필요 없기 때문이다!

다음 포스팅은 중첩 인터페이스에 대해 올리겠습니다~

혹시나 궁금한 점은 댓글로 남겨주세요!

반응형
Comments