1. 특징
    1. 변수나 메소드를 캡슐로 감싸서 안보이게 하는 정보 은닉 개념중 하나이다.
    2. 캡슐화는 객체의 속성과 행위를 하나로 묶고, 외부로부터 내부를 감싸 숨겨 은닉한다. 따라서 외부의 잘못된 접근으로 값이 변하는 의도치 않는 동작을 방지하는 보호 효과도 누릴 수 있다.
  2. 필요이유
    1. 데이터 보호
      1. 외부에서 객체 내부 데이터를 직접 수정하지 못하게 막음
    2. 유지보수 용이
      1. 내부 구현이 바뀌어도 외부 코드에 영향이 없음
    3. 일관성 유지
      1. 메서드를 통해 검증된 값만 설정 가능
    4. 객체 독립성
      1. 객체가 스스로 자신의 상태를 관리하게 함
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());
	}

}