캡슐화, accessor, mutator
캡슐화
데이터를 숨기는 것.
클래스 외부에서 데이터에 접근할 수 없도록 하는 것을 캡슐화라고 합니다.
이것을 위해 알아야 하는 것이 접근자입니다.
public
모든 클래스에서 접근 가능
private
해당 클래스에서만 접근 가능
protected
해당 클래스에서 접근 가능
해당 클래스를 상속받은 클래스 접근 가능
같은 package에서 접근 가능
외부 클래스 접근 불가능
보통 인스턴스 변수는 private으로 메소드는 public을 사용합니다.
accessor
accessor는 보통 게터라고 부르며 인스턴스 변수의 값을 리턴하는 역할을 합니다.
mutator
mutator는 보통 세터라고 부르며 인스턴스 변수의 값을 설정하는 역할을 합니다.
Dog클래스입니다.
인스턴스 변수인 'name'은 private으로 메소드들은 public으로 만들었습니다.
게터(accessor)와 세터(mutator)를 만들어서 'name'에 접근 가능하도록 했습니다.
public class Dog {
private String name;
public dog(String name) {
this.name = name;
}
public void bark() {
System.out.println(name + "이 짖습니다.");
}
// setter
public void setName(String name) {
this.name = name;
}
// getter
public String getName() {
return name;
}
}
변수의 들어가는 값에 범위 제한을 두어야 하는 경우가 많은데
캡슐화를 하지 않고 외부에서 바로 값을 설정하면 문제가 생길 수 있습니다.
그래서 accessor(게터), mutator(세터) 메소드를 사용하여 변수에 접근하도록 만듭니다.
세터(mutator)를 사용할 경우 세터(mutator)에서 올바른 값인지 확인하도록 만들어두면
변수를 사용할 때마다 확인해야 하는 수고를 덜 수 있습니다.
반응형
'JAVA' 카테고리의 다른 글
[JAVA] ArrayList, ArrayList Size 구하기, Index 구하기 (0) | 2019.10.09 |
---|---|
[JAVA] 랜덤(Random) 함수, 난수 생성 (0) | 2019.10.09 |
[JAVA] 두가지 for 반복문, for문 배열 사용 (0) | 2019.10.09 |
[JAVA] int to String, String to int 변환 (0) | 2019.10.09 |
[JAVA] 클래스, 메소드, 객체 (0) | 2019.10.09 |