변수와 함수(메소드)를 하나의 단위로 묶는 것을 의미한다. 즉, 데이터의 번들링(bundling)을 뜻한다.
- 대개 객체 지향 프로그래밍을 지원하는 대부분의 언어에서 제공하는 클래스를 통해 이 Encapsulation이 구현된다.
- 해당 클래스의 인스턴스를 생성하여 클래스 안에 포함된 멤버 변수(인스턴스 변수)와 메소드에 접근할 수 있다.
프로그램의 세부적 구현사항을 외부로 드러내지 않도록 하는 것이다.
- 캡슐화(Encapsulation)을 정보 은닉(information hiding) 그 자체로 혼동하는 경우가 많은데, 이는 대부분의 경우 캡슐화에 정보 은닉이 동반되도록 프로그램을 구현하는 경우가 많기 때문이다.
- 따라서, 대부분의 경우 클래스 외부에서는 바깥으로 노출된 특정 메소드에만 접근이 가능하게하여 내부가 어떤 식으로 처리되는지를 알지 못하도록 설계된다.
public class Person {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Main {
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
p1.setId(1);
p1.setName("Jung");
p2.setId(2);
p2.setName("Hwan");
System.out.println(p1.getId());
System.out.println(p1.getName());
System.out.println();
System.out.println(p2.getId());
System.out.println(p2.getName());
}
}
1
Jung
2
Hwna