참조형 변수에 대해서는 이전에 자바스크립트를 공부하면서 개념은 알고 있었다. 변수에 주소값이 들어 있다면 해당 주소로 가서 거기에 있는 데이터를 읽는다는 것에는 익숙했다. 하지만 이번에 강의를 다시 들으면서 과연 컴퓨터는 참조값(주소값)인 것을 어떻게 알 수 있을까? 주소값도 숫자로 해석할 수 있기 때문에 기본형 변수로 인식할 수 있는 것이 아닐까라는 생각이 들었다.
인텔리제이에서 직접 객체를 출력해보면, 패키지명.클래스명@주소값
이런 형식으로 출력된다. 뭔가 자바 안에서 구분할 수 있는 방식이 존재하는 것 같은데 객체형 변수와 참조형 변수를 치면 표면적인 차이점에 대해서 서술한 글이 대부분이었다.
메모리 구조에 대해서 더 알아보면 답을 얻을 수 있을 것 같아서 구글링을 해보니까 기본형 변수는 Stack 내의 기본 자료형을 넣는 영역에 들어가고, 참조형 변수의 참조값(주소값)은 Stack 내의 참조형을 넣는 영역에 들어간다라고 나온다. 뭔가 약간의 찝찝한 내용이었다. 추론을 해보자면, 스택안에서 기본형 변수와 참조형 변수의 참조값을 저장할 때 구분자를 통해서 구별을 할 수 있을 것 같은데 정확한 메커니즘을 모르겠다. 우선 인프런에 질문을 남긴 상태이다.
이 책의 1장부터 3장까지 읽으면서 인상 깊었던 내용을 나만의 언어로 정리해보겠다
저자는 1장부터 3장까지 한결같은 내용을 말하는 것 같다. 클래스라는 개념에 매몰되지 말고, 객체지향에서 중요한 것은 객체 자체라는 점, 그리고 객체를 정의함에 있어서 중요한 것은 객체가 하는 행동이라는 점, 마지막으로 객체는 책임을 가지고 있고 이 책임을 완수함과 동시에 다른 객체들과 협력하는 존재라는 점이다.
아직 객체지향에 대한 감이 정확하게 오지는 않지만, 이 책에서 반복되서 언급되는 점들을 계속 곱씹어보면 언젠가는 이해되는 날이 오지 않을까라는 생각이 든다.