foxpacking

Programming Lessons

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의 기능을 보완하거나 확장하기 위해서 많이 사용이 됩니다.

내부 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

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나