• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Clone을 통해서 새로운 객체를 만들어낼때

21.01.23 20:56 작성 조회수 215

4

Knight knight2 = knight.Clone();

을 통해서 새로운객체를 만들어내는것은 이해했습니다.

다만 제가  knight2.hp =0을 안하고 디버깅을 했더니

knight2의 hp, attack 값이 기존 만들어두었던 knight의 값으로 자동으로 설정되더군요 (hp=100, attack=10)

Clone 함수에서 knight.hp=hp, knight.attack=attack 이라고 지정하면 Knight클래스 내부의 변수 값을 가져오는걸로 이해했는데 

public int hp, public int attack 이라고 선언만했지 초기값을 지정해주지 않았습니다.

초기값을 지정해주지 않았는데도 자동으로 값이 채워지는 이유는 무엇인가요?

답변 2

·

답변을 작성해보세요.

0

송유승님의 프로필

송유승

질문자

2021.01.23

이해됐습니다. 답변 감사합니다!

0

Clone 함수에서 knight.hp=hp, knight.attack=attack 이라고 지정하면
Knight클래스 내부의 변수 값을 가져오는걸로 이해했는데 

-> knight 클래스 내부의 변수 값이라 함은 모호하고
우리가 작업하고 있는 '그' Knight 객체의 값을 꺼내오는 것입니다.
강의 64번 Line에서 만든 '그' Knight 객체가 되는데
knight.hp = 100, knight.attack = 10을 세팅해놓은 상태이니,
그 knight의 정보를 이용해 복사가 되는 것입니다.

즉 위의 knight.hp=hp, knight.attack=attack
에서 hp는 65번 Line에서 채워넣은 hp에,
attack은 66번 Line에서 채워넣은 attack에 해당합니다.