본문 바로가기

Java

Java 캡슐화와 접근 제어자(게터와 세터)

반응형

클래스나 멤버에 접근 제어자를 사용하는 이유는 클래스의 내부에 선언된 데이터를 보호하기 위해서다. 비밀번호를 누가 바꾸면 큰일 난다. 비밀번호는 외부의 접근을 막아야한다. 이것을 데이터 감추기, 캡슐화라고 한다. 외부에서 접근할 필요가 없는 멤버들은 private으로 지정하여 외부에 노출시키지 않음으로써 복잡성을 줄일 수 있다. 

 

정리하면 접근 제어자(private)를 사용하는 이유는

1) 외부로부터 데이터 보호

2) 외부에 불필요한, 내부적으로만 사용되는 부분을 감추기 위한 목적 

 

예시 코드 : 멤버변수에다가 접근제어자를 private으로 설정하여 외부에서 접근하지 못하도록 했다. 반면 메서드는 public이라서 외부에서 접근이 가능하다. 

public class Time3 {
	private int hour;
	private int minute;
	private int second;
	
	public int getHour() { return hour; }
	public void setHour(int hour) {
		if(hour < 0 || hour > 23) return;
		this.hour = hour;
	}
	public int getMinute() { return minute; }
	public void setMinute(int minute) {
		if(minute < 0 || minute > 59) return;
		this.minute = minute;
	}
	public int getSecond() { return second; }
	public void setSecond(int second)  {
		if( second < 0 || second > 59) return;
		this.second = second;
	}
	
	@Override
	public String toString() {
		return "Time [hour=" + hour + ", minute=" + minute + ", second=" + second + "]";
	}
}

get으로 시작하는 메서드는 멤버변수의 값을 반환한다. 

set으로 시작하는 메서드는 멤버변수의 값을 변경한다. 

 

보통 멤버변수 값을 읽는 메서드를 게터, 멤버변수 값을 변경하는 메서드를 세터라고 부른다. 

게터, 세터의 역할은 암묵적인 규칙이라고 한다.  

반응형