Categories: Java 언어Korean

Java 총 정리[88. 내부 class]

내부 class

이전 걸음 까지 Java에서 알아두면 좋은 여러 가지를 배우고 있습니다. 이전 걸음은 예외 처리를 공부를 하였는데 예외 처리는 필수적으로 많이 사용 하기 때문에 꼭 알아 두면 좋습니다. 이번 걸음도 알아 두면 도움이 되는 내용을 나가 보도록 하겠습니다.

내부 class에 대해서 이번 걸음에서 같이 공부를 해보도록 하겠습니다. 내부 class를 사용을 하지 않고 개발을 하는 경우도 많지만 사용을 하지 않아도 동작에 대한 이해를 하시면 다른 사람이 사용을 한 부분을 이해를 하실 수 있습니다.

내부 class란 무엇인지 설명을 하고 내부 class를 사용을 하는 이유와 예제 소스를 같이 살펴보면서 활용하는 방법을 함께 공부를 할 예정입니다. 이번 걸음을 통해서 내부 class에 대한 이해를 하실 수 있습니다.

내부 class 란?

내부 class는 class안에 class를 넣어서 class를 사용하거나 활용을 하면 내부 class라고 합니다. 바깥에 있는 class를 외부 class라고 하고 안에 있는 class를 내부 class라고 부릅니다. 내부 class는 외부 class의 기능을 보완하거나 확장하기 위해서 많이 사용이 됩니다.

내부 class 종류

  1. 정적 내부 class : 외부 class와 객체를 독립적으로 동작을 합니다.
  2. 맴버 내부 class :  외부 class와 객체를 밀접하게 연관되어 동작을 합니다.
  3. 지역 내부 class : 메소드나 블록 안에서만 사용이 가능합니다.
  4. 익명 내부 class : 이름이 없는 class로 주로 interface나 abstract class의 객체를 사용을 할 때 사용 합니다.(일회성으로 많이 사용)

내부 class 예제

    
public class OuterClass {
    private static int staticOuterField = 20;
    private int memberOuterField = 30;
    
    // 정적 내부 클래스
    public static class StaticInnerClass {
        public void displayStaticOuterField() {
            System.out.println("Static outer field value: " + staticOuterField);
        }
    }
    
    // 멤버 내부 클래스
    public class MemberInnerClass {
        public void displayMemberOuterField() {
            System.out.println("Member outer field value: " + memberOuterField);
        }
    }
    
    public void methodWithLocalInnerClass() {
        // 지역 내부 클래스
        class LocalInnerClass {
            public void display() {
                System.out.println("Local inner class method");
            }
        }
        
        // 지역 내부 클래스 객체 생성 및 메서드 호출
        LocalInnerClass localInnerObj = new LocalInnerClass();
        localInnerObj.display();
    }
    
    public static void main(String[] args) {
        // 정적 내부 클래스 객체 생성 및 메서드 호출
        StaticInnerClass staticInnerObj = new StaticInnerClass();
        staticInnerObj.displayStaticOuterField();
        
        // OuterClass의 인스턴스 생성
        OuterClass outerObj = new OuterClass();
        
        // 멤버 내부 클래스 객체 생성 및 메서드 호출
        MemberInnerClass memberInnerObj = outerObj.new MemberInnerClass();
        memberInnerObj.displayMemberOuterField();
        
        // 지역 내부 클래스 객체 생성 및 메서드 호출
        outerObj.methodWithLocalInnerClass();
        
        // 익명 내부 클래스
        Runnable anonymousInnerObj = new Runnable() {
            @Override
            public void run() {
                System.out.println("Anonymous inner class method");
            }
        };
        
        // 익명 내부 클래스 객체 실행
        anonymousInnerObj.run();
    }
}

    

위 예제 소스와 같이 내부 class를 사용을 하기 위해서 객체화 하는 부분을 유심히 보신다면 내부 class를 분석을 하거나 활용을 할 때 도움이 될 수 있습니다. 여기서 조심 해야 하는 부분이 static class 같은 경우 객체 생성을 하지 않는다고 생각 하는 경우가 많은데 static class는 기존에 알고 있는 static과는 다르고 객체가 필요하다는 것을 꼭 알고 있으면 됩니다.

Dolphin

Recent Posts

Java 총정리[97. Java GUI]

Java GUI Java GUI에 대해서 이번 걸음에서 배움으로써 GUI에 전반적인 지식과 Java GUI를 구현하는 방법…

4개월 ago

Java 총정리[96. Java TCP 통신 프로그램 구현]

Java TCP 통신 프로그램 구현 Java TCP 통신 프로그램 구현을 위해서 이전 걸음에서 쓰레드에 대한…

5개월 ago

Java 총정리[95.쓰레드 통신]

쓰레드 통신 이전 걸음에서 쓰레드의 임계영역에 대해서 같이 공부를 했습니다. 동기화에 대한 개념을 계속적으로 하고…

5개월 ago

Java 총 정리[94. 쓰레드 임계영역]

쓰레드 임계영역 이전 걸음에서 쓰레드의 동기화에 대해서 같이 공부를 했습니다. 동기화에 대한 전반적인 내용을 공부하고…

6개월 ago

Java 총 정리[93. 쓰레드 동기화]

쓰레드 동기화 이전 걸음에서 계속 쓰레드에 대해서 공부를 하고 있습니다. 쓰레드는 상당히 중요한 개념이기 때문에…

6개월 ago

Java 총 정리[92. 쓰레드 join()]

쓰레드 join() 이전 걸음에서 쓰레드의 전반적인 실행 흐름에 대해서 공부를 했습니다. 이제 배운 실행 흐름…

6개월 ago

This website uses cookies.