어떤 클래스에서 은닉 할 수 있는 것들을 말한다.
예를들면, 음료수 자판기라는 클래스가 있다고 치고, 음료 자판기의 콜라가 있을 것이다.
자판기에는 콜라의 숫자 라는 보이지 않는게 객체로 있을것이고, 동전넣다 라는 메소드가 있을 것이고, 음료가 나오다 라는 메소드가 있을 것이다.
자판기의 콜라의 수량을 만약에 사용자가 임의로 수정해버린다면? 문제가 생길 것이다. 그렇기 때문에 캡슐화를 하여 은닉하므로써 문제가 생기지 않도록 해준다.
또한, 객체지향프로그래밍에서는 get()과 set()을 이용하여 사용자가 실수를 했다면 오류가 나지 않도록 임의로 정해 줄 수 있다.
class User{
constructor(firstName, lastName, age){
this.firstName = firstName;
this.lastName = lastName;
this.age = age; // *
}
get age(){
return this._age;
// *부분의 키값과 겹치지 않기 위하여 get과 set의 리턴문에 _를 추가해주었다.
}
set age(value){ // 반드시 파라미터를 지정해주어야 한다.
this._age = value < 0 ? 0 : value;
//사용자가 value값을 0 이하로 입력해버리면, get과 set메소드로 인하여, 0으로 출력한다.
}
}
const user1 = new User('Steve', 'jobs', -1); // -1 입력 But.
console.log(user1.age); // 0 출력