# 리뷰: 게터/세터와 this
#### CODE <a class='btn btn-default' href='/codes/42647'>Link</a>
```
public class KnightTest {
public static void main(String[] args) {
// 객체 생성
Knight don = new Knight("돈키호테", 30);
// 정보 출력
System.out.println("[객체 생성]");
System.out.printf(don.toString());
// 체력 증가: 기존 체력 + 30
don.setHp(don.getHp() + 30);
// 결과 출력
System.out.println("[체력 증가 +30]");
System.out.printf(don.toString());
}
}
class Knight {
// 필드
private String name;
private int hp;
// 생성자
Knight (String name, int hp) {
this.name = name;
this.hp = hp;
}
// 게터
String getName(){
return this.name;
}
int getHp(){
return this.hp;
}
// 세터
void setName(String name) {
this.name = name;
}
void setHp(int hp) {
this.hp = hp;
}
public String toString(){
return String.format("\tKnight { name: %s, hp: %d }\n", this.name, this.hp);
}
}
```
#### INPUT
```
```
#### OUPUT
```
[객체 생성]
Knight { name: 돈키호테, hp: 30 }
[체력 증가 +30]
Knight { name: 돈키호테, hp: 60 }
```
public String toString(){
return String.format("\tKnight { name: %s, hp: %d }\n", this.name, this.hp);
}
public String toString() <- 여기서 public을 빼고, 그냥 디폴트인 String toString()으로만 작성하면 에러가 나는 이유가 궁금합니다.
this.name과 this.hp가 외부에서 접근할 수 없기 때문에 그런건가요?
sehongpark님의 답변
## toString() 메소드는
조금 특별한 메소드입니다. 모든 객체들이 기본적으로 가지고 있는 메소드인데요. 따라서 반드시 public을 붙여줘야 합니다.
보다 자세한 내용은 "자바 Object toString 메소드" 정도로 구글링 해보세요.