중첩 클래스

2022. 4. 21. 18:41java/java

*중첩 클래스의 분류

 

*인스턴스 멤버 클래스

class A {
	class B {
    	B() {}
        int field1;
        //static int field2;        //정적 필드 (x)
        void method1() {}
        //static void method2() {}  //정적 메소드(x)
    }
} 

A a = new A();	  //중첩 클래스 객체 생성 전 A클래스 먼저 객체 생성
A.B b = a.newB(); //그 다음에 B객체 생성

b.field1 = 3;
b.method1();

 

 

*정적 멤버 클래스

class A {
	static class C {
    	C() {}
        int field1;
        static int field2;
        void method1() {}
        static void method2() {}
    }
}

A.C c = new A.C();	// A객체를 생성하지 않아도 바로 C객체 생성가능
c.field1 = 3;
c.method1();

A.C.field2 = 3;     // 정적 필드와 메소드는 생성된 객체를 통해서가 아니라도 곧바로 접근이 가능하다
A.C.method2();

 

 

 

*로컬 클래스

void method() {
	class D {
 		D() {}
        int field1;
        //static int field2;		//정적 필드(x)
        void method1() {}
        //static void method2() {}  //정적 메소드(x)
	}
    D d = new D();
    d.field = 3;
    d.method1();
}

 -메소드 내에서만 사용 가능

'java > java' 카테고리의 다른 글

프로세스와 스레드  (0) 2022.04.22
익명 객체  (0) 2022.04.22
중첩 클래스와 중첩 인터페이스란?  (0) 2022.04.20
디폴트 메소드와 인터페이스 확장  (0) 2022.04.19
인터페이스 상속  (0) 2022.04.19