본문 바로가기
이카루스의 날개/JAVA

객체란?

by 윙혼 2007. 1. 29.

자바는 쉽게 배우다 점점 어려워 지는 것을 느낄수 있습니다.
처음에는 C와 별다를 것이 없다가 책의 본문을 보면 어느
순간 막히는 것을 볼수 있고다. 이는 객체의 개념을 잡지
못해서 입니다.

자바를 시작하기 전에 이런 개념을 잡아놓으면 좋갰지만
C의 포인터와 구조체를 잘조합한 듯한 객체에 대한 설명을
아무런 개념도 안잡힌 사람들에게 설명하라는 것은 정말
막막하기 그지없을것 입니다. 일단 코딩이 중요하다. 나중에
가면 언어는 그저 옵션일 뿐이라고 고수들은 말하니까. 하지만
객체에 대해서 알면 정말 편합니다. 그렇다면 객체란 무엇일까요?

객체란 '클래스의 값을 저장하고 있는 메모리의 주소의 호칭'
이라 생각합니다. 많은 책들에서 클래스는 붕어빵 틀 객체는
붕어빵으로 설명하는데 약간 부연설명을 붙여보갰습니다.

밤늦게 귀가하던 나는 집앞에서 붕어빵을 샀다
-> 붕어빵 내빵 = new 붕어빵();

너무 늦어 먹지않고 잔나는 아침에 어머니께
내가 어제사온 붕어빵이 어디있는지 물었다.
-> 붕어빵 어제사온 붕어빵 = 내빵
(어제사온 붕어빵이라는 붕어빵 객체에 내빵을 대입)

어머니는 그 붕어빵은 식탁위에 있다고 하셨다.
->붕어빵 식탁위에 붕어빵 = 어제사온 붕어빵

우리가 생각하는 붕어빵이나 어제사온 붕어빵 등은 객체를
가르키는 호칭일 뿐이고 진짜 객체는 따로있음을 알수있다.
Class A가 있다고 할때

A a=new A();
A b=a;

SCJP시험을 봐서 알갰지만 a와 b는 사실상 같다. 하지만
호칭은 다릅니다. 혹시 기억이 나지 않는 분들을 위해 다시
예를 들자면

public class 붕어빵{
int 잔량;
public 붕어빵(){
잔량=100;
//붕어빵이 만들어질때 잔량을 100%로 본다
}
}

식탁위에 붕어빵을 봤더니 어머니가 반을 드셨었다.

식탁위의 붕어빵.잔량=50;
한객체만 바뀌었는대 내가 어제사온 붕어빵과 붕어빵의
잔량도 50이 되어버렸다.

우리가 프로그래밍을 하는 곳에서도 a나 b는 객체를
가르키는 값일 뿐이고 실제 객체는 메모리 상에서 변수나
함수를 가지고 있습니다. 이 개념을 잡아야 API를 보기가
쉬울것입니다.

댓글