[Java] Getter & Setter

HyunDong Lee·2022년 5월 31일
0

Java

목록 보기
1/4
post-thumbnail

Getter와 Setter

객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접 접근하는 것을 막는다고 한다. 왜냐하면 객체의 데이터를 외부에서 마음대로 변경하게 되면 "객체의 무결성"이 깨지기 때문이다.

이러한 문제점을 개선하기 위해 등장한 개념이 Getter, Setter이다. 메소드를 통하여 데이터의 직접 접근을 막고 메소드를 공개하여 외부에서 메소드를 통해 데이터에 접근하게 하는 방법이다.


Setter

메소드는 매개값을 검증하여 유효한 값만 데이터로 저장할 수 있는데 이러한 역할을 수행하는 메소드를 Setter라고 부른다.

예를 들어 사람의 나이를 set한다고 생각해보자. 사람의 나이는 100살을 넘기기도 힘들기 때문에 제한을 100세로 둔다. 이렇게 되면 나이로 200살이 들어오는 것은 유효하지 않기 때문에 큰 정수가 매개로 들어오게 되면 최대 100세로 설정해주면 된다.

void setAge(int age){
	if (age > 100){
    	this.age = 100;
        return;
	}else{
    	this.age = age;
    }
}

이런 식으로 setter를 활용할 수 있다.


Geter

객체 외부에서 객체의 필드값을 부적절하게 사용할 경우 Getter메소드를 통하여 필드값을 적절히 가공하여 외부로 전달한다.

예를 들어 나의 키를 cm단위로 저장하고 있다고 가정한다. 하지만 원래 필드값은 m단위로 저장해놨다면 다음과 같은 getter를 작성할 수 있다.

int getHeight(){
	return this.height*100;
}

getter와 setter를 포함한 클래스를 선언할 때는 클래스 내의 필드를 private을 통하여 외부로 부터 setter와 getter메소드를 사용하여 적절하게 데이터를 가공하여 return(Get), 적절하게 필드에 대입(Set)하는 것이 좋다고 한다.

Getter & Setter ex

public class Classname{
	private filedname;
    
    //getter
    public ReturnType getFieldName(){
    	return this.fieldname;
    }
    public void setFieldName(DataType fieldname)	{
    	this.filedname = filedname;
    }
    
}

항상 위에 코드처럼 작성하는 것이 정답이 아니고 필요에 의해 getter만 아니면 setter만 사용하는 경우도 있다.

0개의 댓글