# 리뷰: 마린과 메딕 정답이 마린과 메딕 각각 클래스를 만들어서 객체생성하는건 알겠습니다. 그런데 바로 위에있는 문제 "피라미터로 객체전달" 처럼 히어로 클래스 하나에 두개의 객체 토르 타노스를 만들면 오류없이 잘 작동되는데 이번 마린과 메딕에서도 똑같이 하나의 마린 클래스에서 두 개의 객체생성한다음에 함수만 불러와서 하고싶은데 오류가 나오긴하는데 뭔 소린지 모르겠네여 #### CODE <a class='btn btn-default' href='/codes/20898'>Link</a> ``` public class Starcraft { public static void main (String[] args) { // 객체 생성 Marine m1 = new Marine("모랄레스",60); Marine m2 = new Marine("레이너",80); // 마린의 스팀팩! m2.stimpack(); m1.heal(m2); // 메딕의 힐! } class Marine{ String name; int hp; Marine(String name, int hp){ this.name=name; this.hp=hp; } public void heal(Marine healing){ System.out.printf("[%s]의 치유! => [%s] HP(%d -> ",name, healing.name, healing.hp); healing.hp+=10; System.out.printf("%d)",healing.hp); } public void stimpack(){ System.out.printf("[%s]의 스팀팩! HP: %d -> ",name, hp); hp-=10; System.out.printf("%d",hp); } } } ``` #### INPUT ``` ``` #### OUPUT ``` /root/var/tmp/2020_04_06_05_29_19_12364db3/Starcraft.java:4: error: non-static variable this cannot be referenced from a static context Marine m1 = new Marine("모랄레스",60); ^ /root/var/tmp/2020_04_06_05_29_19_12364db3/Starcraft.java:5: error: non-static variable this cannot be referenced from a static context Marine m2 = new Marine("레이너",80); ^ 2 errors ```
# 마린 클래스의 위치 Marin 클래스가 Starcraft 클래스 내부에 선언 되었네요. 마린 클래스를, Starcraft 클래스 외부로 빼보셔요
``` public class Starcraft { public static void main (String[] args) { // 객체 생성 Marine m1 = new Marine("모랄레스",60); Marine m2 = new Marine("레이너",80); // 마린의 스팀팩! m2.stimpack(); m1.heal(m2); // 메딕의 힐! } } // Starcraft // 이렇게 빼셔야 됩니다. class Marine{ String name; int hp; Marine(String name, int hp){ this.name=name; this.hp=hp; } public void heal(Marine healing){ System.out.printf("[%s]의 치유! => [%s] HP(%d -> ",name, healing.name, healing.hp); healing.hp+=10; System.out.printf("%d)",healing.hp); } public void stimpack(){ System.out.printf("[%s]의 스팀팩! HP: %d -> ",name, hp); hp-=10; System.out.printf("%d",hp); } } ```
아..ㅋㅋ 감사합니다