티스토리 뷰

inner class 란 클래스 안에 또 다른 클래스가 있는 형태를 말한다. 

is a 상속관계를 생각해보면 또 다른 클래스를 참조하는 형태이지만 

inner class는 말그대로 클래스안에 존재한다 

이런 식으로 클래스 안에 또 다른 클래스가 존재하는 형태이다 

그리고 접근지정자를 private로 두면 일반 상속관계에서는 참조할수없지만 

inner class를 통하면 접근지정자에 관계없이 사용이 가능하다. 

구조는 아래와 같다.

public class out{
private int a;//private를 붙여서 일반적으로는 클래스간 참조가 안된다.
private int b;//                  ""
public out(){
a=10;
b=20;
}//생성자를 통해 a와 b값을 초기화 

class inner{
public void disp(){
System.out.println(a);//inner class를 이용해서 값이 정상적으로 출력
System.out.println(b);//                   ""
}

}

class out을 두고 클래스를 마치기 전에 또 다른 클래스를 선언해줬다. 

inner class의 구조는 4가지가 있는데 일단 이런 기본적인 구조를 memberInnerClass라고 부른다.

inner class의 기본적인 구조를 만들었으니 출력하는 문장도 만들어보자

public class InnerTest{

public static void main(String[]args){
Out outter= new Out();
inner in= new inner();
in.disp();
}
}

이런 구조를 통해 출력하는 방법도 있겠지만 이를 한줄로 줄여 가독성과 코드의 불필요한 작성을 줄일 수 있다.

//Out outter= new Out();
//inner in= new inner();
//disp();
Out.inner in=new Out().new inner();
disp();

 

이게 memberInnerClass의 기본적인 구조이고 innerClass를 static을 활용하면 조금 더 간단하게 표현할 수 도 있다.

public class out{
final static int a=10;
final static int b=20;                

static class inner{
public void disp(){
System.out.println(a);//inner class를 이용해서 값이 정상적으로 출력
System.out.println(b);//                   ""
}

}

바뀐것은 static으로 상수를 지정해줬다는 것과 innerclass를 static으로 바꿔 준 것 뿐이다. 

이런식으로 코드를 짜게되면 어떤 이점이 있는지 알아보자

public class InnerTest{

public static void main(String[]args){
Out.inner in= new Out.inner();

}
}

static이 붙으면 어디서나 사용할 수 있기때문에 상위 클래스만 사용한다면 inner in=new inner(); 만 붙여서도 사용할 수 있다.

하지만 이는 이 클래스 내부에서만 아는 사실이기 때문에 외부에서 도 이 값을 받아올 수 있게하기 위해서 Out.을 붙여줬다.  

이런 구조를 자바에서는 static inner class라고 부른다. 

 

여기까지가 memer와 static 의 inner클래스의 기본적인 로직과 특징이다. 이 구조를 파악하고 

유연하게 코드를 짤 수 있다면 다른 2개의 구조도 쉽게 이해할 수 있을 것 같다. 

'웹 프로그래밍 > JAVA(이론 )' 카테고리의 다른 글

Interface의 이해 (JAVA)  (0) 2021.02.27
Is-a 관계 Has-a관계의 이해  (0) 2021.02.14
Stack과 Heap의 이해 (JAVA)  (0) 2021.01.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함