JAVA

get(Accessor) 과 set(Mutator)

싸블양 2025. 10. 9. 16:24

다음 Rectangle클래스를 보고 문제점과 개선해야할 점을 알아보자.

public class Rectangle {
    public int width, height; // ❌, 문제점!! public → 외부에서 직접 접근 가능

    public void setDimensions(int newWidth, int newHeight) {
        width = newWidth;
        height = newHeight;
    }

    public int getArea() {
        return width * height;
    }
}

 

문제점은 widthheightpublic으로 선언되어 있음 → 직접 접근 가능

Rectangle box = new Rectangle();
box.width = -999; // ❌ 논리적으로 잘못된 값도 설정 가능

 

개선 방법은 캡슐화(Encapsulation)
캡슐화란 객체의 내부 상태(데이터)를 외부로부터 숨기고,

공개된 메서드를 통해서만 접근하도록 하는 객체지향 프로그래밍의 원칙이다

mutator? 가뭘까?

mutator 뜻

변이자 [변수 또는 데이터 항목의 값을 변경하는 함수 또는 연산자]. mutation, mutant[1]돌연변이()는 '생물체에서 어버이의 계통에 없었던 새로운 형질이 나타나 유전하는 현상'이다. 유전자나 염색체의 구조에 변화가 생겨 일어난다.

 

돌연변이

mutation, mutant mutation은 돌연변이의 현상 그 자체를, mutant는 그렇게 변이된 개체를 뜻

namu.wiki

 

즉 돌연변이.  누군가 인위적으로 만들어내지 않는 한에야 이런 개체가 생겨나진 못할 것이다. 그래서 인위적으로 바꿔주는 함수를 mutator(뮤테이터)라고 cs에서 부르며, JAVA에서 우리는 set을 뮤테이터 메소드로 활용한다.

 

set(뮤테이터 메소드) 는 캡슐화의 원칙을 유지하면서 OOP에 주로 사용된다. 이 원칙에 따라 클래스의 멤버 변수는 다른 코드로부터 숨겨져서 비공개되고 보호되며,

원하는 새로운 값을 변수로 취하고 선택적으로 유효성을 확인하며 프라이빗 멤버 변수를 수정하는 퍼블릭 멤버 함수(뮤테이터 메소드)에 의해서만 수정이 가능하다. 

 

다시 처음으로 돌아가서.

public class Rectangle {
    private int width, height; // ✅ 외부에서 직접 접근 불가

    public void setDimensions(int newWidth, int newHeight) {
        width = newWidth;
        height = newHeight;
    }

    public int getArea() {
        return width * height;
    }
}

이제 width, heightsetDimensions() 메서드를 통해서만 설정 가능하다

잘못된 값이 들어오는 경우, 예외처리 등으로 코드를 보호할 수 있다.

'JAVA' 카테고리의 다른 글

JAVA에서 todo주석 쓰는법  (0) 2025.10.18
오버라이드(override)  (0) 2025.10.12
재할당 vs 내부 상태 변경  (0) 2025.10.08
자바의 generic 정리  (0) 2025.10.06
스택과 힙 다시 정리  (0) 2025.09.12