# 리뷰: 마린과 메딕 안녕하세요? 저는 아래와 같이 코드를 작성하였는데, 정답 예시를 보니 마린 클래스와 메딕 클래스가 나뉘어져 있더라구요 제가 스타크래프트를 잘 몰라서 그러는데.. 정답 예시 코드에 저렇게 클래스가 나뉘어진 이유가 마린이 사용하는 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) ```
### Q1. 클래스가 마린과 메딕으로 나뉜 이유 마린이 사용하는 stimpack 메소드는 마린만 사용할 수 있고, 메딕이 사용하는 heal메소드는 메딕만 사용할 수 있기 때문인 걸까요? 제가 작성한 코드로는 마린도 heal을 사용할 수 있고, 메딕도 stimpack을 사용할 수 있는 거라서 정답예시 코드와 다른 걸까요..???? ``` 네 맞습니다 문제에서 마린과 메딕 객체를 서로 다른 클래스로 생성된다 여겼기 때문입니다 ``` ### Q2. 파라미터가 없는이유 또, 정답 예시에서 마린의 스팀팩 메소드를 호출할 때 인자를 전달하지 않는 것(marine.stimpack();) 은 메소드 정의시에 target이 아닌 본인의 hp 데이터를 바꾸기 때문인가요? ``` 네 맞습니다 자신의 hp만 감소하기 때문에 파라미터로 인자를 받아오지 않아도 됩니다 ```
감사합니다 !!!!