<--! [JAVA] 중첩클래스(Nested Class) -->

[JAVA] 중첩클래스(Nested Class)

필그램

·

2017. 6. 17. 18:52

중첩클래스란, 클래스 내부에 선언한 클래스를 말한다.


장점으로는 1)두 클래스의 멤버들을 서로 쉽게 접근할 수 있다는 장점과 2)외부에 불필요한 관계를 감출수 있어 복잡성을 줄인다.


또한 한곳에서만 사용되는 클래스를 논리적으로 묶어 처리할 필요가 있을때 Static Nested Class를 사용하며, 캡슐화가 필요할때는 Inner Class를 이용한다.



모바일을 개발할때 이 중첩클래스의 익명객체를 이용하여 적용하게  되므로 매우 중요한 개념이다. 


기본적인 개념으로는 아래와 같다.

Outer가 외부 클래스이고 Nested가 중첩(Nested)클래스 이다.


class Outer { class Nested { } }




예제를 보면 다음과 같다.


A.java  클래스를 만들고


public class A {

A() {System.out.println("A객체 made");}

class B {

B() {

System.out.println("B Object made ");}

int field1;

void method1() {}

//static void method2() {}

}

static class C {

C() {System.out.println("C Object made");}

int field1;

static int field2;

void method1() {}

static void method2() {}

}

void method() {

class D {

D() {System.out.println("D Object made");}

int field1;

void method1() {}

}

D d = new D();

d.field1 = 3;

d.method1();

}

}


실행 클래스는 아래와 같다


public class Main {


public static void main(String[] args) {

A a = new A();

A.B b = a.new B();

b.field1 = 3;

b.method1();

A.C c = new A.C();

c.field1 = 3;

c.method1();

A.C.field2 = 3;

A.C.method2();

a.method();


}


}

반응형