- 특징
- 변수나 메소드를 캡슐로 감싸서 안보이게 하는 정보 은닉 개념중 하나이다.
- 캡슐화는 객체의 속성과 행위를 하나로 묶고, 외부로부터 내부를 감싸 숨겨 은닉한다. 따라서 외부의 잘못된 접근으로 값이 변하는 의도치 않는 동작을 방지하는 보호 효과도 누릴 수 있다.
- 필요이유
- 데이터 보호
- 외부에서 객체 내부 데이터를 직접 수정하지 못하게 막음
- 유지보수 용이
- 내부 구현이 바뀌어도 외부 코드에 영향이 없음
- 일관성 유지
- 메서드를 통해 검증된 값만 설정 가능
- 객체 독립성
- 객체가 스스로 자신의 상태를 관리하게 함
public class Member{
// 1. 데이터 은닉
private String name;
private int age;
//2. 접근 메서드 제공(갭슐화)
public String getName(){
return name;
}
public void setName(String name){
//데이터 검증 로직 추가 가능
if(name == null || name.isEmpty()){
throw new IllegalArgumentException("이름은 비어 있을 수 없습니다.")
}
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
if(age < 0){
throw new IllegalArgumentException("나이는 음수가 될 수 없습니다.");
}
this.age = age;
}
}
public class Main{
public static void main(String[] args){
Member m = new Member();
m.setName("민상");
m.setAge(25);
System.out.println(m.getName() + " / " + m.getAge());
}
}