InnerClass(내부 클래스)

Soozoo·2024년 6월 28일

JAVA

목록 보기
31/41
  • nnerClasee(내부클래스) 내부 클래스(Inner Class)는 클래스 내에 정의된 또 다른 클래스를 말합니다. 이러한 내부 클래스는 외부 클래스의 멤버(변수와 메소드)에 쉽게 접근할 수 있는 장점이 있습니다.

    내부 클래스의 장점

    1. 캡슐화: 내부 클래스는 외부 클래스의 멤버에 접근할 수 있으므로, 외부 클래스의 내부 구현을 숨기면서도 관련 기능을 처리할 수 있습니다.

    2. 코드의 가독성: 관련된 클래스를 하나의 클래스 안에 두어 코드의 가독성을 높일 수 있습니다.

    3. 이벤트 핸들링: GUI 애플리케이션에서 이벤트 리스너를 작성할 때 자주 사용됩니다.

      예제 코드 설명

      다음은 내부 클래스를 사용하는 예제 코드입니다.

      java
      package ex06.innerClass;
      
      class OuterClass {
          static int no;
          String message = "hello~~~~";
      
          public void outerMethod() {
              System.out.println("outer method call~~~");
          }
      
          class InnerClass { // 내부 클래스
              int su = 99;
      
              public void show() {
                  System.out.println(su); // 내부 클래스 멤버 사용 가능
                  System.out.println(message); // 외부 클래스 멤버 사용 가능
              }
      
              public void disp() {
                  outerMethod(); // 외부 클래스 메소드 호출
              }
          } // InnerClass end
      } // OuterClass end
      
      public class MainEntry {
          public static void main(String[] args) {
              // 1. 외부 클래스 인스턴스를 통해 내부 클래스 인스턴스 생성
              OuterClass oc = new OuterClass();
              OuterClass.InnerClass ic = oc.new InnerClass();
              ic.show();
              ic.disp();
              System.out.println("================================");
      
              // 2. 외부 클래스 인스턴스를 바로 생성하여 내부 클래스 인스턴스 생성
              OuterClass.InnerClass inner = new OuterClass().new InnerClass();
              inner.show();
          }
      }
      

      코드 설명

    4. OuterClass: 외부 클래스입니다. no라는 정적 변수와 message라는 인스턴스 변수를 가지고 있으며, outerMethod라는 메소드를 정의하고 있습니다.

    5. InnerClass: 외부 클래스 안에 정의된 내부 클래스입니다. su라는 인스턴스 변수와 show, disp라는 메소드를 가지고 있습니다.

      • show 메소드: 내부 클래스의 멤버 변수 su와 외부 클래스의 인스턴스 변수 message를 출력합니다.
      • disp 메소드: 외부 클래스의 메소드 outerMethod를 호출합니다.
    6. MainEntry: 메인 클래스입니다.

      • 첫 번째 방법: 외부 클래스 인스턴스를 생성한 후, 내부 클래스 인스턴스를 생성하여 showdisp 메소드를 호출합니다.
      • 두 번째 방법: 외부 클래스 인스턴스를 바로 생성하여 내부 클래스 인스턴스를 생성하고, show 메소드를 호출합니다.
profile
넙-죽

0개의 댓글