# 리뷰: 마린과 메딕
안녕하세요?
저는 아래와 같이 코드를 작성하였는데, 정답 예시를 보니 마린 클래스와 메딕 클래스가 나뉘어져 있더라구요
제가 스타크래프트를 잘 몰라서 그러는데..
정답 예시 코드에 저렇게 클래스가 나뉘어진 이유가
마린이 사용하는 stimpack 메소드는 마린만 사용할 수 있고, 메딕이 사용하는 heal메소드는 메딕만 사용할 수 있기 때문인 걸까요?
제가 작성한 코드로는 마린도 heal을 사용할 수 있고, 메딕도 stimpack을 사용할 수 있는 거라서 정답예시 코드와 다른 걸까요..????
또, 정답 예시에서 마린의 스팀팩 메소드를 호출할 때 인자를 전달하지 않는 것(marine.stimpack();) 은
메소드 정의시에 target이 아닌 본인의 hp 데이터를 바꾸기 때문인가요?
질문이 길어져 죄송합니다 ㅜ.ㅜ
#### CODE <a class='btn btn-default' href='/codes/94444'>Link</a>
```
public class Starcraft {
public static void main (String[] args) {
// 객체 생성
User Marine = new User("레이너", 80);
User Medic = new User("모랄레스", 60);
// 마린의 스팀팩!
Marine.stimpack(Marine);
// 메딕의 힐!
Medic.heal(Marine);
}
}
class User{
String id;
int hp;
//생성자
public User(String i, int h){
id = i;
hp = h;
}
//메소드
void stimpack(User obj){
System.out.printf("[%s]의 스팀팩! HP: %d -> ", obj.id, obj.hp);
obj.hp -= 10;
System.out.printf("%d%n", obj.hp);
}
void heal(User obj){
System.out.printf("[%s]의 치유! => [%s] HP(%d ->", id, obj.id, obj.hp);
obj.hp += 10;
System.out.printf(" %d)", obj.hp);
}
}
```
#### INPUT
```
```
#### OUPUT
```
[레이너]의 스팀팩! HP: 80 -> 70
[모랄레스]의 치유! => [레이너] HP(70 -> 80)
```
sehongpark님의 답변
### Q1. 클래스가 마린과 메딕으로 나뉜 이유
마린이 사용하는 stimpack 메소드는 마린만 사용할 수 있고, 메딕이 사용하는 heal메소드는 메딕만 사용할 수 있기 때문인 걸까요?
제가 작성한 코드로는 마린도 heal을 사용할 수 있고, 메딕도 stimpack을 사용할 수 있는 거라서 정답예시 코드와 다른 걸까요..????
```
네 맞습니다
문제에서 마린과 메딕 객체를
서로 다른 클래스로 생성된다 여겼기 때문입니다
```
### Q2. 파라미터가 없는이유
또, 정답 예시에서 마린의 스팀팩 메소드를 호출할 때 인자를 전달하지 않는 것(marine.stimpack();) 은
메소드 정의시에 target이 아닌 본인의 hp 데이터를 바꾸기 때문인가요?
```
네 맞습니다
자신의 hp만 감소하기 때문에
파라미터로 인자를 받아오지 않아도 됩니다
```
rtydd님의 답변
감사합니다 !!!!