JAVA

[JAVA] 캡슐화, accessor, mutator

dev_bear 2019. 10. 9. 06:15

캡슐화, 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)에서 올바른 값인지 확인하도록 만들어두면

변수를 사용할 때마다 확인해야 하는 수고를 덜 수 있습니다.

반응형