Language/Java

캡슐화(Encapsulation)

Hoplin 2019. 2. 20. 16:49
반응형

감기약을 생각해보자. 감기약에는 다음과 같은 효능이 있다.


1 . 기침을 멈추게 해준다

2 . 열을 내려주게 해준다

3 . 코막힘을 없애준다


이 세가지 효능이 있다고 가정하자. 감기약은 이 세가지 효능을 하나의 '캡슐'안에 담아서 사람들이 이 '캡슐'하나만 먹으면 저 3가지 효능을 볼 수 있게끔 해준다. 자바에서의 캡슐화 또한 알약에서의 캡슐의 원리와 동일하다. 상황, 목적에 따라 캡슐을 만들듯 클래스를 캡슐화 하면 프로그램이 매우 간결해 질 수 있다. 캡슐화를 하지 못하면 프로그램이 복잡해지고 구현 과정이 어려워지기 마련이다. 밑의 예제는 캡슐화에 대한 두가지 경우의 예제이다.


1 . 


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
31
32
33
34
35
36
37
38
39
40
41
class take1 {
    void take()
    {
        System.out.println("take1");
    }
}
class take2 {
    void take() {
        System.out.println("take2");
    }
}
class take3{
    void take() {
        System.out.println("take3");
    }
}
class res{
    take1 a = new take1();
    take2 b = new take2();
    take3 c = new take3();
    
    void take()
    {
        a.take();b.take();c.take();
    }
}
 
class get{
    void take(res r)
    {
        r.take();
    }
}
 
class ma{
    public static void main(String[] args)
    {
        get t = new get();
        t.take(new res());
    }
}
cs

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
28
29
30
31
32
33
34
35
class aa {
    void take1()
    {
        System.out.println("take1");
    }
    void take2()
    {
        System.out.println("take2");
    }
    void take3()
    {
        System.out.println("take3");
    }
    void take()
    {
        take1();
        take2();
        take3();
    }
}
 
class bb{
    void taking(aa r)
    {
        r.take();
    }
}
 
class ma{
    public static void main(String[] args)
    {
        bb r = new bb();
        r.taking(new aa());
    }
}
cs


반응형