반응형

- Setter메서드 : 객체 내부의 값을 설정하는 기능의 메서드

- Getter메서드 : 객체 내부의 값을 반환하는 기능의 메서드

 

클래스를 정의할 때 필드는 private지정이 일반적이다.
그러면 객체 내부의 값에 접근하는 기능의 메서드를 만들어 주어야 한다.
이러한 메서드를 setter/getter메서드라고 한다.

예를 한번 보도록 한다.
만약 이름과 나이를 저장하는 프로그램을 작성한다고 가정했을 때

다음과 같은 클래스를 정의할 수 있겠다.

public class Person {
	String name;
	int age;

	public Person() {
	}

	public Person(String name) {
		this.name = name;
	}

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
}


객체 내부의 접근을 제한 할 때 필드는 private 메서드는 public을 권장한다고 했다.
접근 제한자를 사용하면 다음과 같이 사용할 수 있겠다.

public class Person {
	private String name;
	private int age;

	public Person() {
	}

	public Person(String name) {
		this.name = name;
	}

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
}

위와 같이 필드는 내부에서만 접근이 가능하고 메서드는 공개하도록 했을 때
그럼 private 멤버에는 어떻게 접근해서 값을 사용할까?
메서드를 public으로 한다고 했으니 이를 이용해야 한다.

다음 예제를 보고 계속 하자.

public class Person {
	private String name;
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	/* 생성자들 */ 
	public Person() {
	
	}

	public Person(String name) {
		this.name = name;
	}

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
}

직접적으로 멤버 필드에 접근하여 값을 사용하도록 하는 것은
코딩오류가 발생할 여지가 많으므로 위와 같이 내부 멤버필드에 접근하여 값을 사용할 수 있는 멤버 메서드를 정의하여 활용하게 된다.
이 때 객체의 멤버필드에 값을 저장하는 메서드는 setter라하고
멤버 필드의 값을 가져올 수 있는(return) 기능의 메서드는 getter라고 불린다.

이 setter와 getter의 이름을 지정하는 권장 규칙이 하나 있는데
멤버 필드의 값 이름을 사용하여 만든다.

 


일반적으로 setter는 매개변수로 멤버 필드에 저장할 값을 받고 이를 this를 통해 멤버 필드에 저장한다. 그리고 getter는 멤버 필드의 값을 return하는 기능으로 구현된다.

접근 제한자를 적절히 활용하여 프로그래밍 코드의 오류를 줄이고 짜임새 있는 코딩을 하도록 하자.

반응형

+ Recent posts