# 숨겨진 필드 변경하기 - 세터(setter) #### 세터의 필요성? <kbd>private</kbd> 필드는 외부에서 직접 값을 변경(write)할 수 없습니다. 이를 해결하기 위해서 세터 메소드가 필요합니다. ![클라우드스터딩-자바-세터-메소드](https://i.imgur.com/rk87USi.png) #### 코드 예 세터(setter)는, private 필드를 우회적으로 변경(write)합니다. ``` class SmartPhone { // private 필드 private int number; // 세터 메소드 public void setNumber(int n) { number = n; } } ``` ### 세터의 특징 세터 메소드는 아래의 특징을 갖습니다. - private 필드를 변경한다. - public 이다. - 메소드명은 반환하려는 private 필드명 앞쪽에 set을 붙인다. ## 문제 주어진 코드는 생성된 Lock 객체의 비밀번호를 변경하는 코드이다. 하지만 아래와 같은 에러가 발생한다. ``` LockTest.java:7: error: password has private access in Lock lock.password = "654#@!"; ^ 1 error ``` 세터(setter)를 활용하여 출력 예와 같은 결과를 얻으시오. ## 출력 예 ``` Lock { password: 654#@! } ```
관련 강의로 이동

코드: java 1.8

public class LockTest { public static void main(String[] args) { // 객체 생성 Lock lock = new Lock("123!@#"); /* 1. 세터를 호출하여, 비밀번호를 변경하시오. */ lock.password = "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. 비밀번호 변경을 위한, 세터 메소드를 추가하시오. */ }

입력

정답이 궁금하다면? 코드를 제출해보세요!