본문 바로가기

IT/개발

레퍼런스(reference) 타입

 자바에는 크게 두 개의 타입이 존재합니다. 프리미티브 타입(primitive type)과 레퍼런스 타입(reference type)입니다.

 

 

 

 

 

컴퓨터가 읽을 수 있는 기본적인 값을 나타내기 위한 primitive데이터를 제외한 나머지 타입을 래퍼런스 타입이라고 합니다.

레퍼런스 타입은 프리미티브 타입을 기본으로 해서 만들어집니다.

 

 

 

레퍼런스 타입이 사람 혹은 사람의 내장이라고 한다면 프리미티브 타입은 사람과 내장을 이루고 있는 세포라고도 할 수가 있습니다.

 

 

자바에서 레퍼런스 타입과 프리미티브 타입의 가장 큰 차이점을 생각한다면 레퍼런스 값을 다룬 다는 것입니다.

 

레퍼런스 타입으로 선언된 변수는 참조형변수라고 불립니다.

 

이름이 참조형변수인 이유는 자바에서 참조형변수는 참조값을 통해 데이터에 접근하기 때문입니다.

참조형변수는 참조값을 이용하여 데이터에 접근하기 때문에 둘이 하나를 가리킬 수도 있습니다. 즉 참조형변수간의 대입연산은 참조값의 복사가 일어납니다.

 

자바에서는 레퍼런스 타입의 변수를 동적바인딩을 통하여 메모리에 할당하게 됩니다. 그렇게 할당된 메모리를 참조값을 통해서 접근하기 때문에 실제 타입과 직간접적으로 관련있는 레퍼런스 타입으로 할당이 가능해서 다형성 구현이 가능해 집니다.

 

 

 

이는 현실세계의 다양성을 표현하기 위한 방법으로 생각됩니다. 현실세계를 보면 전화통화와 비슷하다고 생각됩니다. 송신자가 수신자에게 전화를 합니다. 그러면 보통은 전화의 주인인 수신자가 전화를 받습니다. 하지만 어떠한 경우에 있어서는 가족, 친구 등등 수신자와 직간접적으로 관련있는 사람이 전화를 받을 수도 있는 것입니다. 이러한 것을 표현하기 위한 방법이 레퍼런스 타입이라고 생각됩니다.

 

실제 인스턴스화된 객체는 Heap영역에 할당이 되고 이를 가리키기 위해서는 인스턴스화된 객체의 타입과 같은 레퍼런스 타입의 변수를 선언해서 그 참조값을 저장하고 있어야 해당 인스턴스화된 객체에 접근할 수가 있습니다.

 

레퍼런스타입은 기본적으로 제공되는 배열과 열거타입을 제외한 다음에는 API클래스, 인터페이스들을 이용해서 사용하는 방법이 있고, 직접 클래스나 인터페이스를 만들어서 사용하는 경우가 있습니다.

 

'IT > 개발' 카테고리의 다른 글

다형성(polymorphism)  (0) 2013.08.15
상속(inheritance)과 확장(extend)  (0) 2013.08.15
객체(object)  (0) 2013.08.13
클래스(class)  (0) 2013.08.13
객체지향(object oriented)의 개념  (0) 2013.08.13