반응형

중첩 클래스 정의

* description : 특수클래스 -> 중첩 클래스 : 클래스안에 클래스
* 요약 :
* 클래스의 3요소 : 속성, 생성자, 함수
* 멤버 클래스 - 일반 속성 클래스 : 외부 클래스를 생성해야 내부 클래스를 사용가능
*             정적 속성 클래스 : 외부 클래스 생성없이 바로 사용 가능
* 로컬 클래스 - 함수(메소드) 안의 클래스 : 함수를 실행해야 사용 가능
public class Outer {
    // TODO : 클래스의 3요소 = 속성, 생성자, 함수
    // 생성자
    public Outer() {
        System.out.println("외부 클래스가 생성됨");
    }

    // TODO : 일반 속성 (내부)클래스
    public class Attr {
        //        생성자
        public Attr() {
            System.out.println("Attr 내부 클래스가 생성됨");
        }

        int field1;     // 속성

        void method1() {
        }
    }

    // TODO : 정적 속성(내부) 클래스
    static class Share {
        // 생성자
        public Share() {
            System.out.println("Share 정적 객체가 생성됨");
        }
        int filed1; // 일반 속성
        static int field2; // 정적 속성
        void method1(){};   // 일반 함수
        static void method2(){
            System.out.println("정작함수가 실행됨");
        };   // 정적 함수
    }
    
    // TODO : 로컬 클래스 : 함수 안의 클래스
    void method(){
        // TODO : 내부 클래스
        class Local{
            // 생성자
            public Local() {
                System.out.println("Local 객체가 생성됨");
            }
            int field1; // 속성
            void method1(){};   // 함수
        }
        // Local 객체 생성
        Local local = new Local();
        local.field1 = 3;       // 내부클래스 속성
        local.method1();        // 내부클래스 함수
    }
}

중첩클래스의 사용

public class OuterApplication {
    public static void main(String[] args) {
//        TODO : 외부클래스 : Outer 객체 생성
        Outer outer = new Outer();

//        TODO : 1) 일반 속성 내부 클래스 객체 생성
//         사용법 : 외부클래스.내부클래스 객체변수 = 외부객체.new 내부생성자함수();
        Outer.Attr attr = outer.new Attr();
        attr.field1 = 3;    // 내부 클래스의 속성
        attr.method1();     // 내부 클래스의 함수

//        TODO : 2) 정적(공유) 속성 내부 클래스 객체 생성 없음 : 바로 호출
//         사용법 : 외부클래스.내부클래스.속성, 외부클래스.내부클래스.함수()
        Outer.Share.field2 = 3;     // 공유 내부 클래스의 공유속성 호출
        Outer.Share.method2();      // 공유 내부 클래스의 공유함수 호출

//        TODO : 3) 로컬 클래스 : 함수 안의 클래스
        outer.method(); // 안에서 클래스 자동 생성됨



    }
}

실행결과

 

외부 클래스가 생성됨
Attr 내부 클래스가 생성됨
정작함수가 실행됨
Local 객체가 생성됨

반응형

'Java > Java 이론' 카테고리의 다른 글

[JSP] Java Server Pages 란?  (0) 2024.07.03
스레드(Thread)  (0) 2023.10.04
람다 함수  (0) 2023.10.02
파일 클래스를 이용한 파일 출력  (0) 2023.10.02
objectstream  (0) 2023.10.02

+ Recent posts