object는 사물함(Heap)에 저장된다.
object는 저장소(field)와 기능(method)으로이루어져있다.
object의 기능(method)을 사용하기 위해 참조값( id값 || key값 )으로 object에 접근할 수 있다.
(참조값은 보통 변수에 들어 있거나, 다른 객체의 저장소(field)에 들어있다)
object는 data type을 갖는다.
object의 data type에 따라 가질 수 있는 저장소, 저장소 이름과 기능, 기능의 이름은 객체별로 다르게 정해진다.
(객체의 data type이 같다면 저장소와 기능 목록은 같아진다.)
객체에 대해 이해하기위해
위의 그림을 참고로 하여 예제를 물어보자!
변수에 key 값을 담아 놓고 Method를 사용하려는 경우에는 어떻게 해야할까?
(key 값을 참조해서 method를 사용할 수는 없다.)
우선 key값을 직접 참조할 수는 없기때문에 키값을 갖고 있는 변수를 만들었다.
var a = 10;
var b = 11;
var c = 12;
method를 사용하는 방법은 아래와 같다.
a.open( );
b.in( );
c.close( );
변수를 참조하면 사용할 메서드가 있는 사물함(heap)의 key값을 가져올 수 있고,
key값을 알면 메서드를 사용할 수 있다.
(heap영역에서 생성된 key값은 stack 영역에 저장된다.)
그렇다면, send( ){ } 메서드를 사용하고자하면 어떻게 해야할까?
send메서드는 변수로 지정해 주지 않았다.
그런데 위의 그림을 자세히 보면 11번 key를 사용해서 열 수 있는 사물함 안의 sender field에
send( ){ }메서드가 들어있는 사물함의 key 값이 들어있다.
이런 경우, 아래와 같은 방법으로 메서드를 사용할 수 있다.
b.sender.send( ){ }
b변수에 담겨있는 사물함의 11번 key를 갖고 오고,
그 안에 있는 field의 이름인 sender이름을 참조해서 사물함의 13번 key를 갖고온다.
그리고 그 안에 있는 send( ){ } method를 사용할 수 있다.
*참고*
기본 데이터 타입은 참조해서 사용할수 없다.
참조형 데이터 타입은 key값이 반환되기 때문에 참조해서 사용할 수 있다.
'JAVA' 카테고리의 다른 글
연산자 Operator (0) | 2019.11.29 |
---|---|
이클립스 export / import / delete 하는 방법 (0) | 2019.11.29 |
JAVA 테이터형의 종류 / casting (0) | 2019.11.28 |
JAVA 설치 / Eclipse 설치 및 세팅 (0) | 2019.11.28 |
java 프로그래밍 및 실행 순서 / 클래스 구조 분석 (0) | 2019.11.28 |