Java/객체 지향
객체 지향 원칙 1 - 캡슐화(Encapsulation)
by 정구정구
2026. 6. 4.
캡슐화(Encapsulation)
- 객체의 정보를 외부에서 직접 접근하지 못하게 보호하는 개념
- 캡슐처럼 감싸서 내부를 보호하고 외부로부터 내용물을 숨김
- 접근제어자를 통해 구현 가능
접근 제어자(Encapsulation)
- 클래스, 변수, 메서드, 생성자의 접근 범위를 제한하는 키워드
| 제어자 |
같은 클래스 |
같은 패키지 |
자손 클래스 |
전체 |
| public |
O |
O |
O |
O |
| protected |
O |
O |
O |
|
| default |
O |
O |
|
|
| private |
O |
|
|
|
public class DataClass
{
public String publicData;
private String privateData;
public DataClass() {} // 생성자
public void publicMethod() {}
private void privateMethod() {}
}
DataClass dataClass = new DataClass(); // 접근가능
dataClass.publicData; // 접근가능
dataClass.privateData; // 접근불가능
dataClass.publicMethod(); // 접근가능
dataClass.privateMethod(); // 접근불가능
게터(Getter)
- 보호된 내부 데이터를 안전하게 조회하기 위해서 사용
public class DataClass
{
private String privateData;
public String getPrivateData() {
return this.privateData;
}
}
public class Main {
public static void main(String[] args) {
DataClass dataClass = new DataClass();
dataClass.privateData; // 직접 접근 불가능
String newPassword = dataClass.getPrivateData(); // getter를 활용해 접근가능
}
}
세터(Setter)
- 보호된 내부 데이터를 안전하게 설정/변경하기 위해서 사용
public class DataClass
{
private String privateData;
public void setPrivateData(String privateData)
{
this.privateData = privateData; // 데이터 변경
}
}
public class Main
{
public static void main(String[] args)
{
DataClass dataClass = new DataClass();
dataClass.privateData = "New Password"; // 직접 접근, 변경 불가능
dataClass.setPrivateData("New Password"); // setter를 활용해 접근, 변경가능
}
}