1. 캡슐화란?

데이터를 숨기는 것.

클래스 외부에서 데이터에 접근할 수 없도록 하는 것을 캡슐화라고 합니다.

이것을 위해 알아야 하는 것이 접근자입니다.

 

public

모든 클래스에서 접근 가능

 

private

해당 클래스에서만 접근 가능

 

protected

해당 클래스에서 접근 가능

해당 클래스를 상속받은 클래스 접근 가능

같은 package에서 접근 가능

외부 클래스 접근 불가능

 

보통 인스턴스 변수는 private으로 메소드는 public을 사용합니다.

 

2. accessor

accessor는 보통 게터(getter)라고 부르며 인스턴스 변수의 값을 리턴하는 역할을 합니다.

3. mutator

mutator는 보통 세터(setter)라고 부르며 인스턴스 변수의 값을 설정하는 역할을 합니다.

 

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

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

 

캡슐화의 이점

accessor = get() : 인스턴스의 변수 값을 return 

mutator = set() : 인스턴스의 변수 값을 설정

harry 라는 Employee 인스턴스를 만든다

harry의 Hireday 변수인 d를 만든다.

 

'📌 java > Object-oriented Programming' 카테고리의 다른 글

Homework_W4  (0) 2020.04.07
Homework_W3  (0) 2020.03.31
java - method call  (0) 2020.03.31
java - public의 의미  (0) 2020.03.27
Homework_W2-02  (0) 2020.03.27
복사했습니다!