리뷰: 마린과 메딕

정답 예시코드에서
Marine과 Medic의 생성자 정의할때

// 생성자
public Marine(String name, int hp) {
this.name = name;
this.hp = hp;
}

// 생성자
public Medic(String name, int hp) {
this.name = name;
this.hp = hp;
}

이렇게 this.라고 쓰신 걸 보고 질문드립니다
이렇게 쓰는 경우도 있나요?

CODE Link

  1. public class Starcraft {
  2. public static void main (String[] args) {
  3. // 객체 생성
  4. Marine marine = new Marine("레이너", 80);
  5. Medic medic = new Medic("모랄레스", 60, 60);
  6. // 마린의 스팀팩!
  7. marine.stimpack();
  8. // 메딕의 힐!
  9. medic.heal(marine);
  10. }
  11. }
  12. class Marine{
  13. String name;
  14. int hp;
  15. Marine(String n, int h){
  16. name = n;
  17. hp = h;
  18. }
  19. void stimpack(){
  20. System.out.printf("[%s]의 스팀팩! HP: %d -> ", name, hp);
  21. hp -= 10;
  22. System.out.printf("%d\n", hp);
  23. }
  24. }
  25. class Medic{
  26. String name;
  27. int hp;
  28. int mp;
  29. Medic(String s, int h1, int m){
  30. name = s;
  31. hp = h1;
  32. mp = m;
  33. }
  34. void heal(Marine target){
  35. System.out.printf("[%s]의 치유! => [%s] HP(%d -> ", name, target.name, target.hp);
  36. target.hp += 10;
  37. System.out.printf("%d)", target.hp);
  38. }
  39. }

INPUT

OUPUT

  1. [레이너]의 스팀팩! HP: 80 -> 70
  2. [모랄레스]의 치유! => [레이너] HP(70 -> 80)

this 키워드는

생성자에서 입력변수(파라미터)와 필드를 구분하기 위해 자주 사용됩니다.

this 키워드는 메소드 수행의 주체 객체를 가리키는데요.
현재 학습중인 생성자를 지나, 추후 학습하게 될 내용입니다.
(저도 모르게 설명하지 않은 개념을 사용했었군요. 피드백 감사합니다)

관련 문제: https://cloudstudying.kr/challenges/402

[Markdown Preview]