# 숨겨진 필드 변경하기 - 세터(setter)
setPassword 메소드 앞에는 왜 void인가요??
메소드를 정의할 경우에
앞에 값은 어떠한 기준에 따라 정하는지 잘 이해가 안가네요..
#### CODE <a class='btn btn-default' href='/codes/41577'>Link</a>
```
public class LockTest {
public static void main(String[] args) {
// 객체 생성
Lock lock = new Lock("123!@#");
/* 1. 세터를 호출하여, 비밀번호를 변경하시오. */
lock.setPassword("654#@!");
// 객체 정보 출력
System.out.println(lock.toString());
}
}
class Lock {
// 필드
private String password;
// 생성자
public Lock(String p) {
password = p;
}
// 메소드
public String toString() {
return String.format("Lock { password: %s }", password);
}
/* 2. 비밀번호 변경을 위한, 세터 메소드를 추가하시오. */
public void setPassword(String pw) {
password = pw;
}
}
```
#### INPUT
```
```
#### OUPUT
```
Lock { password: 654#@! }
```
goodlife1359님의 답변
## void 의미
메서드에서 void는 리턴값이 없는것을 의미합니다.
즉 , 메서드를 호출한곳으로 값을 반환하지 않겠다는 의미 입니다.
그러나 메서드의 반환값이 있는경우 해당 데이터의 타입을 적어주면 됩니다.
메서드의 구조는 public 리턴타입 메서드명() { } 입니다.
이 문제에서는 ,
/* 1. 세터를 호출하여, 비밀번호를 변경하시오. */
lock.setPassword("654#@!");
/* 2. 비밀번호 변경을 위한, 세터 메소드를 추가하시오. */
public void setPassword(String pw) {
password = pw;
}
setPassword 메서드의 파라미터로 "654#@!" 값을 넘깁니다.
setPassword 메서드는 파라미터로 전달된 pw 값을 password 변수에 저장하는 역할을 합니다.
리턴 타입이 void 이기 때문에 값을 반환하지 않습니다.
jah05159님의 답변
와 이거 궁금했었는데 진짜 감사합니다... 순간 뇌가 번쩍햇네요