작성
·
230
0
만약에 Kngiht knight2 = new Knight();를 생성하고
knight2.hp=0 을 안적고 그대로
knight2.hp 값을 출력하면
질문1
왜 65번째줄 knight.hp=100값을가져오는지 이해가 안됩니다
질문2
knight.hp = 100을한다고 해서 class Knight의 hp변수가 public int hp=100으로 바뀌는건 아니지 않나요?
질문3
Kngiht knight2 = new Knight();경우말고
Knight knight2 = DeepCopy();일때 질문1의 경우와 같이 knight.hp=100 값을 가져오는 과정이 같은건가요?
힙에 new로 생성한 Knight가 두개가 생성되고
kngiht와 knight2는 각각 다른 힙영역을 참조하고 있다고 생각했는데 혼란스러운 상황입니다
답변 2
0
글을 읽다가 궁금해서 남깁니다.
1번질문에서는 원래 knight2.hp는 0이나와야 하지않나요?
new Knight();를 했을때 초기값으로 hp가 100이 되려면
class knight를 생성할때 public int hp =100;을 해줘야 1번답변 knight2.hp =100이 되지않나요?
0
힙에 new로 생성한 Knight가 두개가 생성되고
kngiht와 knight2는 각각 다른 힙영역을 참조하고 있다고 생각했는데 혼란스러운 상황입니다
네 처음에 이해하신게 맞는 상황입니다.
질문1 왜 65번째줄 knight.hp=100값을가져오는지 이해가 안됩니다
knight.hp = 100 값을 가져온다는게 어떤 의미일까요?
해당 부분은 knight 객체의 hp를 100으로 설정하는 것이지,
무엇인가를 '가져오는' 개념이 아닙니다.
질문2 knight.hp = 100을한다고 해서 class Knight의 hp변수가 public int hp=100으로 바뀌는건 아니지 않나요?
네 아닙니다. 생성된 knight라는 객체의 hp를 100으로 세팅하는 것이죠.
질문3
Kngiht knight2 = new Knight();경우말고
Knight knight2 = DeepCopy();일때 질문1의 경우와 같이 knight.hp=100 값을 가져오는 과정이 같은건가요?
질문이 잘 이해가 안 갑니다.
깊은 복사를 했다면 기본적으로 별도의 객체이기 때문에 knight.hp = 100로 1번 객체의 값을 설정하더라도, 2번 객체에는 영향을 주지 않습니다.
제가 깊은 복사 개념을 잘못 이해하고 있었어요
ㅠㅠ 답변해주셔서 감사합니다!