[Java] getter, setter

Bam·2024년 3월 1일
0

Java

목록 보기
33/98
post-thumbnail

getter, setter

외부에서 객체의 내부에 함부로 접근하여 데이터를 마구잡이로 읽고 쓰는 것은 보안적인 측면에서 좋지 못합니다. 예상치 못한 오류가 발생할 수도 있고 데이터가 외부로 유출될 수도 있기 때문이죠.

이러한 것을 막기 위해 자바에서는 접근 제어자를 이용해서 접근 범위를 제한하는 동시에 메소드를 통해서 멤버 변수에 접근하도록 약속하고 있습니다. 이때 사용하는 메소드가 gettersetter입니다.

getter

getter는 객체의 멤버 변수를 가져오도록 하는 메소드입니다. 보통 getXxxxx()와 같은 이름으로 작성됩니다.

public class Student extends Member {
    private int grade;

    public Student(String name, int grade) {
        this.name = name;
        this.grade = grade;
    }

    public void printStudentInfo() {
        System.out.println("이름: " + name + "\n" + "학년: " + grade);
    }
}

위와 같은 코드에서 멤버 변수 gradeprivate로 선언되어있기 때문에 외부에서 접근을 할 수 없습니다. 따라서 생성된 객체의 grade를 조회하고 싶다면 해당 객체에 getter를 만들어서 값을 접근할 수 있도록 해야합니다.

다음과 같은 getter 메소드를 클래스에 추가해줍니다.

public int getGrade() {
        return this.grade;
}
public class Main {
    public static void main(String[] args) {
        Student student = new Student("김사과", 1);

        int grade = student.getGrade();

        System.out.println(grade);
    }
}

생성자로 초기화한 멤버 grade의 값이 잘 출력됐습니다.

setter

setter는 멤버 변수의 값을 설정하는 메소드입니다. setXxxxx()와 같은 이름으로 생성합니다.

마찬가지로 클래스에 grade의 값을 설정할 수 있는 setter 메소드를 만들어줍니다.

public void setGrade(int grade) {
	this.grade = grade;
}
public class Main {
    public static void main(String[] args) {
        Student student = new Student("김사과", 1);

        student.setGrade(2);

        int grade = student.getGrade();

        System.out.println(grade);
    }
}

setter로 설정한 값이 정상적으로 설정됐죠?


앞으로는 객체의 멤버 변수를 사용할 때는 직접 접근하기 보다 접근 제어자를 설정하고 getter, setter를 이용해서 설정하는 습관을 해두는 것을 추천드립니다.

0개의 댓글