홍팍 선생님 안녕하세요 생성자강의보다가 문의드립니다. 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()메서드호출시 매개변수에 또 객체를 넣었은건데, 매개변수를 아무거나 넣을 수있는건가요 ?ㅠㅠ 이 부분이 잘 이해가안가요..
## 코드의 흐름파악 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 객체입니다.
상세한 답변너무감사합니다 !