내부 클래스

황희윤·2023년 11월 9일

특징

  • 내부 클래스(inner class)는 외부 클래스(outer class)의 속성과 메서드를 제약 없이 접근할 수 있다.

  • 내부 클래스를 이용해서 복잡한 코드를 은닉해 캡슐화할 수도 있다.

  • 하지만 내부 클래스는 외부 클래스의 멤버로만 사용되기 때문에 재사용 측면에서는 효율적이지 못할 수 있다.

  • 내부 클래스가 객체를 만들 때는 반드시 외부 클래스의 객체를 먼저 생성하고서 가능하다. 그래서 내부 클래스는 static 변수와 메서드의 선언이 안된다.
    만약 static 선언이 가능하면 내부 클래스는 외부 클래스의 객체 생성 유무와 관계없이 독립적으로 사용될 수 있기 때문이다.

  • 상수인 static final 선언은 가능하다.

class Outer {
	int num = 100;
    class Inner {
    	static final int num = 200;
        public void innerFunc() {
        	int num = 300;
            
            int localNum = num; // 300
            int innerNum = this.num; // 200
            int outerNum = Outer.this.num; // 100
        }
    }
}
profile
HeeYun's programming study

0개의 댓글