본문 바로가기

프로그래밍언어/Java

[Java 중급] 정적 중첩 클래스

정적 중첩 클래스



public class NestedOuter {
    
    private static int outClassValue = 3;
    private int outInstanceValue = 2;
    
    static class Nested {
        private int nestedInstanceValue = 1;
        
        public void print() {
            // 자신의 멤버에 접근
            System.out.println(nestedInstanceValue);
            
            // 바깥 클래스의 인스턴스 멤버에 접근
            //System.out.println(outInstanceValue);
            
            // 바깥 클래스의 클래스 멤버에는 접근할 수 있다. private도 접근 가능하다.  
            System.out.println(outClassValue); 
        }
    }
}

=> 바깥 클래스의 인스턴스 멤버에는 접근할 수 없다. 그러나 바깥 클래스의 클래스 멤버에는 접근할 수 있다. static은 물론 중첩 클래스가 아니어도 접근이 가능하지만 차이점은 private도 접근 가능하다는 접이다. 

 

public class NestedOuuterMain {
    public static void main(String[] args) {
        NestedOuter outer = new NestedOuter();
        NestedOuter.Nested nested = new NestedOuter.Nested();
        nested.print();

        System.out.println("nestedClass = " + nested.getClass());
    }
}

 

 

실행결과

 

 

* 인프런 '스프링 핵심 원리 -기본편' 강의를 참고하여 작성했습니다.