내부 클래스

Moon·2024년 3월 26일

Java

목록 보기
36/45

class Outer {
    class InstanceInner {
        int iv = 100;
        int cv = 200;
    }

    static class StaticInner {
        int iv = 300;
        static int cv = 400;
    }

    void myMethod() {
        class LocalInner {
            int iv = 500;
        }
    }

    public static void main(String[] args) {

        //인스턴스 내부 클래스
        Outer oc = new Outer(); //-> 외부 클래스 인스턴스 만들고
        Outer.InstanceInner ii = oc.new InstanceInner(); //-> 내부 클래스 인스턴스 만들어서 접근.
        System.out.println("ii.iv: " + ii.iv); //100
        System.out.println("ii.cv: " + ii.cv); //200

        //정적 내부 클래스의 정적 필드는 바로 접근 가능
        System.out.println("Outer.StaticInner.cv: " + Outer.StaticInner.cv);

        //정적 내부 클래스의 인스턴스 필드는 클래스 인스턴스 만들어야 함.
        Outer.StaticInner si = new Outer.StaticInner();
        System.out.println("si.iv :" + si.iv);
//        System.out.println("Outer.StaticInner().iv" + Outer.StaticInner.iv) //불가능
    }
}

0개의 댓글