홍팍 선생님 안녕하세요
생성자강의보다가 문의드립니다.
public class Starcraft {
public static void main(String[] args) {
Marine ma = new Marine("레이너",80);
Medic me = new Medic("모랄레스",60,60);
ma.stimpack();
me.heal(ma);
}
}
class Marine{
String name;
int hp;
Marine(String s, int i){
name = s;
hp =i;
}
void stimpack() {
System.out.println("스팀팩");
}
}
class Medic{
String name;
int hp;
int mp;
Medic (String s, int i1,int i2){
name =s;
hp = i1;
mp =i2;
}
void heal(Marine target) {
System.out.println("힐");
}
}
main메서드안에 me.heal(ma); 이 이해가 잘안됩니다.
Medic을 me로 객채생성후 heal()메서드를 불러오는데 그안에 ma 들어가는게 이해가 잘안됩니다.
Marine클래스에있는 메서드를 사용하기위해서 객체를 객체 두개를 각각 생성했고 heal()메서드호출시 매개변수에 또 객체를 넣었은건데, 매개변수를 아무거나 넣을 수있는건가요 ?ㅠㅠ 이 부분이 잘 이해가안가요..
goodlife1359님의 답변
## 코드의 흐름파악
Medic me = new Medic("모랄레스",60,60);
위 코드는 Medic 객체를 만드는 코드 입니다.
me.heal(ma);
위 코드에서 heal 메서드를 호출하는 주체 객체는 me 객체 입니다.
heal 메서드의 파라미터로 ma 객체가 전달됩니다.
void heal(Marine target) {
System.out.println("힐");
}
즉 , target 변수는 new Marine("레이너", 80) 객체를 가리킵니다.
왜내햐면 heal 메서드를 호출할때 메서드의 파라미터로 ma 객체를 전달했기 때문입니다.
코드의 흐름이 me 객체가 heal 메서드를 호출해서 ma 객체를 힐 시켜주는 것입니다.
따라서 heal 메서드를 호출하는 주체객체가 me이고 힐 대상이되는 파라미터가 ma 객체입니다.
curvejin님의 답변
상세한 답변너무감사합니다 !