[Java] Nested class


Nested Class (Static inner class)


ネストされたクラスは、他のクラスの内部でメンバーとして定義されたクラスです.
staticキーワードを使用する内部クラスと同じ意味です.

Javaの例


ソースコード

  • OuterClass { NestedClass }
  • public class OuterClass {
    	private int val; // 인스턴스 변수
        	private static int cnt = 1; // 클래스 변수 (static)
        
    	public OuterClass (int val) {
        		this.val = val;
            }
        
            // static inner class (Nested class)
            public static class NestedClass {
                public void displayOuterInfo() {
                    // System.out.println(val);	<- 컴파일 오류
                    //				   static 클래스에서는 외부 클래스의
                    //				   'static이 아닌 멤버' 사용 불가
    
                	System.out.println(cnt);
                }
    
            public static int num = 10; // static을 삭제하면 num 변수 사용 시 오류 발생
    
            public static void print() { // static을 삭제하면 print() 호출 시 오류 발생
                System.out.println("num = " + num);
            }
        }
    }
  • Main
  • public class Main {
    	public static voiod main(String[] args) {
        	System.out.println("Nested Class(중첩 클래스) : static inner class\n");
            
            OuterClass.NestedClass nest = new OuterClass.NestedClass();
            nest.displayOuterInfo();
            
            System.out.println(OuterClass.NestedClass.num);
            OuterClass.NestedClass.print();
        }
    }

    実行結果



    staticとして宣言された内部クラスでは、staticとして宣言された変数とメソッドしか使用できません.
  • Innerクラス概念
  • メンバー内部クラスの例
  • Local inner classの例
  • Anonymousクラスの例