공부혜옹

[JAVA] Getter와 Setter 본문

공부합시다/JAVA

[JAVA] Getter와 Setter

Blair06 2019. 9. 1. 14:12

일반적으로 객체 지향 프로그래밍에서 객체의 데이터는 외부에서 직접적으로 접근하는 것은 막는데, 그 이유는 객체의 데이터를 마음대로 읽고 변경할경우 무결성이 깨질 수 있기 때문이라고한다.

클래스를 선언할 때 가능하면 필드를 private로 선언해서 보호하고 Setter와 Getter를 사용해 안전하게 사용하는 것이 좋다.


예를들어 세상에 몸무게가 음수인 사람은 없다.

mySecret.weight = -10;

;하지만 위의 코드의 경우 Secret 객체의 weight 필드값을 음수로 설정한다.

이런 일들을 방지하기 위해서 외부에서 데이터를 직접 접근할 수 없도록 막고, 메소드를 거쳐 데이터를 접근하도록한다.

외부→데이터 (x)

외부→메소드→데이터 (o)

이것을 가능케 하는것이 바로 Setter메소드이다!

public void set + 필드이름(double 필드이름){
	this.필드이름 = 필드이름; 
}

ex)

public void setWeight(double weight) { 
	if(weight < 0) { 
		this.weight = 0; //매개변수가 음수일 경우 weight필드에 0을 저장하고 메소드 종료
		return; 
	} else {
		this.weight = weight; 
        }
}

데이터를 변경할 때 뿐만아니라 단순히 불러와 읽을때도 메소드를 한번 거쳐 필드값을 가공하고 전달하는 것이 좋다. ( 필드값을 사용하기 부적절한경우를 방지 할 수 있다.)

또, 필드를 private으로 접근을 제한했기 때문에 필드를 읽고자 할때 메소드를 거쳐 읽어야한다.

 

이때엔 Getter 메소드가 사용된다.

public 리턴타입 get + 필드이름 () {
	return 필드값; 
}

이때 필드타입이 boolean인 경우 Getter는 get이 아닌 is로 시작하는 것이 관례

그거 true니? false니?이런뜻인가..

 

SUMMARY

# 클래스를 private로 선언해서 보호하고 Setter와 Getter를 사용해 안전하게 사용

# 필드타입이 boolean일경우 get이아닌 is사용


개인적인 공부를 토대로 포스팅한 글입니다. 틀린점이나 수정할점이 있다면 알려주세요 : )

 

반응형
Comments