티스토리 뷰

[java 24강] 내부 클래스(Inner Class)



오늘 강의는 내부 클래스(Inner Class) 에 대해서 알아보겠습니다.


내부 클래스는.... 클래스 안에 클래스입니다. 


그럼 외부클래스는 무엇일까요? 바로 내부 클래스 밖에 있는 클래스를 말합니다.


내부 클래스의 장점은.. 


1. 외부 클래스의 변수나, 메소드를 자유롭게 사용이 가능한것.


2. 코드 복잡성을 줄일수 있습니다. (클래스도 캡슐화를 위해 사용하죠? 캡슐화 된것에서 한번더 캡슐화 했다고 생각하시면됩니다.)


그럼 내부클래스 안써도 되잖아? 라는 생각이 듭니다.


정말 사실대로 말씀드리면 진짜 별로 쓸일이 없습니다.


아주 가끔! 이벤트처리 들을 만들다가 너무 많아지면 묶음 개념으로 사용해본것 같습니다... ㅎㅎ


그래도 자바에서는 내부 클래스 라는것도 되는구나! 라고 알아두셔야 하기때문에 강의를 작성하였습니다.


바로 예제로 들어가도록 하겠습니다.



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
package test24;
 
public class test24 {
 
    public static void main(String[] args) {
        test1 A = new test1();
        test1.test2 B = A.new test2();
        B.test3(3, 4);
    }
 
}
 
class test1 {
    
    int a = 0;
    int b = 0;
    
    class test2{
        
        public void test3(int c, int d) {
            a = c;
            b = d;
            System.out.println("int a = "+a+"     int b = "+b);
        }
    }
    
}
cs


실행 결과



소스코드 해설


test1  클래스에 test2 클래스를 만들어 넣었습니다. (test1 클래스는 외부클래스, test2 클래스는 내부클래스 가 됩니다.)


외부클래스 test1 클래스에 변수 a,b 를 만들어 주었습니다.


내부클래스 test2 클래스에 test1 클래스의 변수들의 값을 넣어주고 현재 값을 출력할수 있는 test3 메소드를 만들어 주었습니다.


다음 만들어준 클래스를 생성합니다.


public static void main(String[] args) {
        test1 A = new test1();
        test1.test2 B = A.new test2();
        B.test3(3, 4);
    }


내부 클래스를 생성하기 위해서 외부클래스인 test1 클래스를 생성후..


생성된 외부클래스 A 에 접근하여 A.new test2(); 로 내부 클래스 test2 를 B 라고 만들어 주었습니다. 


그다음 내부클래스 B의 메소드 test3을 호출하였습니다.


그결과 외부클래스의 변수들에게 값이 들어간 것을 확인할수 있었습니다...




이렇게 해서 내부 클래스(Inner Class) 대해서 알아보았습니다. 수고하셨습니다..!



댓글