파라메터에다가 + 값을 적으면 이 답처럼 메소드를 안만들어도 + 30 이 되는거에요 ? # 리뷰: 기사 돈키호테 #### CODE <a class='btn btn-default' href='/codes/23406'>Link</a> ``` public class KnightTest { public static void main(String[] args) { // 객체 생성 Knight knight1 = new Knight("돈키호테", 30); // 정보 출력 System.out.println("[객체 생성]"); System.out.printf("\t%s\n", knight1.toString()); // 체력 증가: 기존 체력 + 30 knight1.setHp(knight1.getHp() + 30); // 결과 출력 System.out.println("[체력 증가 +30]"); System.out.printf("\t%s\n", knight1.toString()); } } class Knight { // 필드 private String name; private int hp; // 생성자 public Knight(String name, int hp) { this.name = name; this.hp = hp; } // 게터 public int getHp() { return this.hp; } // 세터 public void setHp(int hp) { this.hp = hp; } // toString public String toString() { return String.format("Knight { name: %s, hp: %d }", this.name, this.hp); } } ``` #### INPUT ``` ``` #### OUPUT ``` [객체 생성] Knight { name: 돈키호테, hp: 30 } [체력 증가 +30] Knight { name: 돈키호테, hp: 60 } ```
setHp 메소드는 변수의 값을 변경할수 있는 메소드 이고 getHp 메소드는 hp값을 가져오는 메소드 입니다. Knight knight1 = new Knight("돈키호테", 30); 현재 돈키호테의 hp가 30인데 기존 체력 + 30을 하려면 knight1.getHp 메소드를 호출해서 현재 체력을 가져온후 + 30을 한 값을 다시 knight1.setHp 메소드에 넣어주면 hp 가60으로 변경됩니다. knight1.setHp(knight1.getHp() + 30); 가 호출되었을때 knight1.getHp() + 30 = 60이 setHp 메소드의 전달값으로 전달되어 knight1객체의 hp가 60으로 바뀌게 됩니다. 즉 setHp메소드에서 hp의 값을 변경해줬기때문에 knight1객체의 hp값이 30에서 60으로 변경된것입니다.