객체란 ?
자바에 대하여 말하기전에 객체에 대해서 설명을 하고 자바에 대해 들어가야 할꺼같다. 자바를 공부할때 객체에 대해서 지속적으로 나오는데, 이 객체는 Class
와 인스턴스를 포함한 개념이다. 그러므로 이 객체를 알기 위해서는 Class
와 인스턴스를 알아야한다.
객체지향에서의 Class
객체지향에서의 Class
는 일종의 설계도라고 보면된다. 자바에서 Class
를 만들면 Class
변수와 메소드를 넣어서 만드는데, 이와같은 방식으로 자동차에 대하여 Class
를 만들면 일단 자동차의 속성으로 들어갈 바퀴,연료, 시트, 차체 등을 Class
변수로 만들어서 넣을것이다. 그리고 자동차의 기능인 전진, 후진, 방향전환, 속도제어등을 메소드로 넣을것이다. 그런식으로 Class
를 만들면 자동차라는 Class
가 만들어 지는 것이다.
객체지향에서의 인스턴스
위에서 Class
를 만들고 그 Class
를 기반으로 인스턴스를 만들면 그 Class
에 포함되있는 모든것을 사용할 수 있는 인스턴스가 만들어 지는데, 이 인스턴스가 생성되는 순간 이 Class
는 실체를 가지고 메모리에 올라간다. 이 올라간 인스턴스를 객체라고 한다. 우리가 만약 자동차를 사기전에 상상을 하면서 '아 나는 자동차를 타고 ~를 갈꺼야' 라는 생각을 할때, 그 자동차는 실체를 가지고 있지 않기 때문에 어디까지나 객체라고 할 수는 없는 것이나, 자동차를 사고 '나는 내자동차를 타고 ~를 갈꺼야' 하는 생각속에서는 내 자동차라는 객체가 있는것이 되는 셈이다.
자바내에서의 객체생성
Car mycar=new Car();
자바에서 객체를 생성을 하는경우 대부분 위와 같은 방식으로 객체를 생성한다. 이 부분을 나누어서 봐야하는데, Car mycar
이부분은 그냥 객체를 담기위한 공간을 미리 선언을 해주는 부분이다 우리가 일반적인 변수를 생성할때도 int num
까지 만 만들면 아무것도 없다고 생각하듯이 mycar
에도 현재는 아무것도 없는 것이다. 그리고 new Car()
부분에서 객체가 생성이 되며, 이 다음부터 mycar
변수를 통해서 Car
라는 Class
에 접근이 가능해 지는 것이다. 이 사실을 이용하면 가끔 생성만 하고 접근을 할 필요가 없는 Class
가 있는데, 그런 Class
를 굳이 객체 변수에 저장을 할 필요가 없어지며, 객체를 매개변수나 리턴값으로 받을 때 좀더 깔끔하게 주고 받을 수 있게 된다.