getter 와 setter

신예환·2022년 10월 26일
0

자바

목록 보기
6/12
post-thumbnail

getter 와 setter 사용이유

class getter_setter_v1 {
	public static void main(String[] args) {
		사람 a사람 = new 사람();
		a사람.id = 20;

		System.out.println("제 번호는 " + a사람.id + " 입니다.");
		// 출력 : 제 번호는 20 입니다.
	}
}

class 사람 {
	public int id;
}

먼저, a사람.id = 20; -> a사람.id = -5;
마음대로 변경이 가능하다. (-5라는 사람 아이디는 존재하면 안되는데)

class 사람 {
	// private => 외부로 공개되지 않는다., 리모콘에 노출되지 않는다.
	private int id;
    
    public void setId(){
    	id = 20;
    }
}

따라서 외부에서 마음대로 접근하지 못하게, private으로 바꿔 주고 메소드를 하나 만들어준다. 또 -5를 사용할 수 없게 하려면 메소드니깐 조건문을 걸어 줄 수 있다!

(20이 아닌 다른 번호도 받을 수 있게 아래와 같이 메소드를 수정해 준다.)

class getter_setter_v1 {
	public static void main(String[] args) {
		사람 a사람 = new 사람();
		a사람.setId();

		System.out.println("제 번호는 " + a사람.id + " 입니다.");
		// 출력 : 제 번호는 20 입니다.
	}
}

class 사람 {
	// private => 외부로 공개되지 않는다., 리모콘에 노출되지 않는다.
	private int id;
    
    public void setId(int id){
    	this.id = id;
    }
}

그 다음은 설정한 내용을 받아야한다.
출력 부분의 a사람.id 은 외부에서 접근이 불가능하기 때문에 이 부분도 메소드로 만들어 준다. 메인 클래스와 함께 고치면,

class getter_setter_v1 {
	public static void main(String[] args) {
		사람 a사람 = new 사람();
		a사람.setId(20);

		System.out.println("제 번호는 " + a사람.getId() + " 입니다.");
		// 출력 : 제 번호는 20 입니다.
	}
}

class 사람 {
	// private => 외부로 공개되지 않는다., 리모콘에 노출되지 않는다.
	private int id;
    
    public void setId(int id){
    	this.id = id;
    }
    
    public int getId(){
    	return id;
    }

정리하면

  • 외부에서 마음대로 변경할 수 없게 하도록 private을 사용.
  • private 사용시 사람 클래스 내부의 id를 사용하기 위해서 public 메소드를 만들어 사용.
  • setter를 이용하여 id를 설정함에 있이서 조건문을 걸어 조작이 가능하고, getter를 이용하여 private로 설정된 아이디 값을 가져 올 수 있음.
profile
더디가도 함께가자

0개의 댓글