Java

3.6.6 MotorCycle m = new MotorCycle()

by IT장인 posted Dec 28, 2013
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄


3.6.6 MotorCycle m = new MotorCycle()

지금까지 참조 변수에 대해서 알아보았다. 여러분은 객체를 생성하는 단 한 줄의 구문으로 많은 시간을 투자한 것이다. 단 한 줄이지만 그만한 가치가 있었을 것이다. 마무리하는 의미에서 다시 정리를 해보자.

□ MotorCycle m = new MotorCycle();
◇ MotorCycle : 새로운 사용자 정의 데이터 타입
◇ m : MotorCycle 데이터 타입으로 선언한 참조 변수(객체 변수)
◇ new : 메모리를 생성하는 연산자, 참조값을 리턴한다.
◇ MotorCycle() : 메모리 생성 후 해당 메모리의 초기화 작업을 담당하는 생성자

이쯤에서 결론을 내려보자.

□ 결론
◇ 객체 변수는 참조 변수다.
◇ 객체의 이름은 참조값(Reference)이 할당되기 때문에 다른 참조값을 할당한다 하더라도 실제 객체에 연결된 내부의 메모리는 복사가 되지 않는다. 단순한 참조값에 대한 값복사가 이루어진다.
◇ 참조값만 가지고 있다면 해당 객체를 핸들할 수 있다.

객체를 복사하면 참조값만 복사되기 때문에 클론(clone)이라는 기법을 이용해서 연결된 메모리까지 복사하는 기법이 있다. 이것은 10장의 Object 클래스를 학습하면서 배우게 될 것이다.

□ 메모리 차원의 객체 복사 기법
◇ 객체의 실제 메모리를 복사하기 위해서 클론(clone)이라는 기법을 사용한다.

이 절에서 나오는 객체의 할당에서 가장 중요한 부분은 바로 객체는 참조값이라는 것이다.

주소의 참조값 즉 레퍼런스(Reference)라는 것은 할당을 하더라도 단순한 레퍼런스만 복사될 뿐 객체의 메모리는 복사되지 않는다. 객체를 복사할 수 없기 때문에 자바에서 객체에 대한 메모리 차원의 복사를 위해서 Cloneable이라는 인터페이스를 제공해주고 있다. 객체복사는 차후에 배우게 될 것이다.

여기서는 객체끼리 할당하려고 한다면 당연히 데이터 타입이 같아야 한다는 것과 할당이 이루어질 때 참조값만이 복사된다는 것을 기억해두기 바란다.