본문 바로가기
쿤즈 Dev/Java

[Java] 멤버 변수 접근 메서드 Getter, Setter

by Koonz:) 2023. 9. 8.
728x90

자바(Java)에서 멤버 변수에 접근하고 값을 변경하기 위해서는 메서드를 사용한다. 그래서 기본적으로 값을 조회하는 메서드를 getter, 값을 변경하는 메서드를 setter라 부른다. 이러한 메서드를 사용하면 클래스 내부의 변수를 캡슐화하고, 외부에서 직접 접근하지 않고 안전하게 데이터를 조작할 수 있다.

'getter'와 'setter'는 자바 빈(JavaBean) 규칙을 따르며, 객체 지향 프로그래밍에서 정보 은닉과 캡슐화를 지원하는 중요한 요소이다. 이번 포스팅에서는 이 'getter', 'setter' 메서드에 대해서 알아보자.


접근 메서드 Getter

'getter' 메서드는 클래스의 인스턴스 변수의 값을 반환하는 메서드이다. 보통 'get' 다음에 변수 이름의 첫 글자를 대문자로 하여 메서드 이름을 짓는다. 'getter' 메서드를 사용하여 클래스의 인스턴스 변수를 안전하게 조회할 수 있다.

 

예를 들어서, 다음과 같은 클래스에서 getter 메서드를 만들어 보자.

public class Student {
    private Integer id; // 식별자
    private String name; // 이름
    private Integer age; // 나이

    // 생성자
    public Student(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    /* getter */
    public Integer getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }
}

이 클래스에서 각 멤버 변수는 private으로 외부에서 접근을 차단하였다. 그리고 조회를 하기 위해서 getter 메서드를 이용해서 각 변수의 값을 조회할 수 있도록 하였다.


설정 메서드 Setter

'setter' 메서드는 클래스의 인스턴스 변수에 값을 설정하는 메서드이다. 보통 'set' 다음에 변수 이름의 첫 글자를 대문자로 하여 메서드 이름을 짓는다. 'setter' 메서드를 사용하여 클래스의 인스턴스 변수를 안전하게 수정할 수 있다.

 

예를 들어서, 다음과 같은 클래스에서 setter 메서드를 만들어보자.

// 학생 클래스
public class Student {
    private Integer id; // 식별자
    private String name; // 이름
    private Integer age; // 나이

    // 생성자
    public Student(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    /* setter */
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

위 클래스는 마찬가지로 모든 멤버 변수는 private으로 외부에서 접근하지 못 하도록 해두었다. 하지만 인스턴스의 값을 변경할 수 있도록 하기 위해서 'setter' 메서드를 만들어 두었다. 이로써 이름과 나이는 수정이 가능하다.


'getter'와 'setter'를 사용하면 클래스의 내부 구현을 숨기고 외부에서 데이터에 접근할 때 제한을 두어 데이터의 무결성과 보안을 유지할 수 있다. 또한, 데이터에 대한 초가적인 로직을 구현하거나 값을 검증하는 등의 작업을 수행할 수 있다. 이것은 객체 지향 프로그램의 핵심 원칙 중 하나인 정보 은닉과 캡슐화를 지원하는 방법 중 하나이다.

댓글