# 리뷰: 마린과 메딕
스팀팩 메소드 ( hp -10감소) 가 heal 메소드 (마린 **hp -10감소유지** -> hp +10 증가)로 이어지는 이유가 뭘까요?
메소드안에서 일어난 일은 공유 안되는줄 알았는데말이죠..
#### CODE <a class='btn btn-default' href='/codes/80551'>Link</a>
```
public class Starcraft {
public static void main (String[] args) {
// 객체 생성
Unit marine = new Unit("레이너",80,0);
Unit medic = new Unit("모랄레스",60,60);
// 마린의 스팀팩!
marine.stimpack();
// 메딕의 힐!
medic.heal(marine);
}
}
class Unit {
String name;
int hp;
int mp;
Unit(String name, int hp, int mp){
this.name = name;
this.hp = hp;
this.mp = mp;
}
void stimpack(){
System.out.printf("[%s]의 스팀팩! HP: %d -> ", name, hp);
hp -= 10;
System.out.printf("%d\n", hp);
}
void heal(Unit target){
System.out.printf("[%s]의 치유! => [%s] HP(%d -> ", name, target.name, target.hp);
target.hp += 10;
System.out.printf("%d)", target.hp);
}
}
```
#### INPUT
```
```
#### OUPUT
```
[레이너]의 스팀팩! HP: 80 -> 70
[모랄레스]의 치유! => [레이너] HP(70 -> 80)
```
sehongpark님의 답변
## 메인 메소드에서
마린이 스팀팩을 시전 후,
메딕이 힐을 했기 때문입니다
```
// 마린의 스팀팩!
marine.stimpack();
// 메딕의 힐!
medic.heal(marine);
```
(질문을 잘 이해한건지 모르겠다능)
tichu_be님의 답변
오... 호출후 객체의 HP에도 영향을 끼치나보군요
sehongpark님의 답변
## 네, 맞습니다.
아마도
메소드 스코프와
클래스 스코프의 개념이 헷갈린 듯 한데요.
메소드는 다른 메소드에
영향을 주지 않지만,
객체를 변경한 경우,
객체의 값은 그대로 유지 됩니다.
### TMI: 스택과 힙 메모리
객체는 힙(heap) 메모리에 존재하여
객체를 없애기 전까지는
그 값들이 계속 유지 됩니다.
반면 메소드는
스택(stack) 메모리에서 동작하는데
스택 메모리는
메소드 종료와 동시에
해제되어 사라집니다.
tichu_be님의 답변
오호 .. TMI 좋군요.. 스택과 힙 이렇게 CS지식을 알아갑니당 ~