Post

Java 3, 캡슐화

Java의 특징

특징.

지난번에 이어서 Java 주요 특징들을 정리해보겠습니다.

객체지향 프로그래밍

Java는 알다시피 객체지향 프로그래밍 언어입니다.
이번엔 객체지향 프로그래밍의 특징에 대해 알아보겠습니다.
주요 특징으론 캡슐화, 상속, 추상화, 다향성이 있는데 오늘은 추상화에 대해 살펴보겠습니다.

캡슐화

어떤식으로 작성할까 고민하며 여러 글과 책을 찾아보다 한 가지 예시가 떠올라 써보겠습니다.
먼저 여러분이 몸이 안 좋을때 챙겨먹는 ‘약’을 생각해봅시다.
그것도 ‘캡슐’로 된걸로.
우리가 약사는 아니지만 상식적으로 생각해보면, 캡슐약 안에는 서로 관련이 있는 성분, 혹은 같이 복용했을 때 효과가 나타나는 약들이 들어있을 겁니다.

그럼, 조금만 다르게 생각해보면 이 캡슐약은 외부에서 다른 약 성분,
다른 물질이 섞이지 않게
해주는 존재가 캡슐입니다.

이건 ‘Java에서도 마찬가지 입니다.
Java의 특징 중, 캡슐화는 관련이 있는 속성이나, 기능들을 한데 묶어놓는 개념입니다.
또한 외부에서 속성과 기능을 변경하지 못하게 은닉도 해줍니다.

우리는 코드를 공부하는 사람들이니, 코드로 작성을 해보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Car {
    String carName;
    String makeCompany;
    String color;
    String price;

    void moveForward() {
        ...
    }

    void moveLeft() {
        ...
    }

    void moveBack() {
        ...
    }
}

네, 지난번에 봤던 Car클래스 코드입니다.
이 코드 또한 이미 캡슐화의 예시가 될 수 있습니다.
조금만 수정을 해주면 말이죠.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Car {
    private String carName;
    private String makeCompany;
    private String color;
    private String price;

    void moveForward() {
        ...
    }

    void moveLeft() {
        ...
    }

    void moveBack() {
        ...
    }
}

이렇게 바꿔줄 수 있습니다.
갑자기 추가된 private은 Java에서 접근 제어자라고 불리는 코드입니다.
조금만 설명하자면 private은 단어 뜻 그대로 동일한 클래스 내에서만 접근이 가능하다. 입니다. 사적이란 뜻이죠.
‘접근 제어자’를 포함하여 변수(속성)을 생성해야 완벽한 캡슐화라고 할 수 있습니다.

private말고도 다양한 접근 제어자가 있지만 추후에 정리하도록 하겠습니다.
일단 이번 포스트의 주 내용인 캡슐화를 요약한다면.

관련이 있는 변수(속성)와 함수(기능)를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 은닉하는게
캡슐화라고 요약할 수 있습니다.

This post is licensed under CC BY 4.0 by the author.