Post

Class와 Object 이해하기

Class랑 Object에 대해 쉽게 설명해 보기

  • 객체란 상태가 있고 행동을 하는 실체입니다. 예를 들어 자동차를 보면 모델명, 현재 속도, 크기 등 여러가지 상태 정보가 있고 동시에 직진, 후진, 좌회전 등 여러가지 행동을 할 수 있습니다. 또 우리 사람도 객체라고 볼 수 있습니다. 이름, 나이, 성별 등 상태가 있고 먹거나 놀거나 일하는 등의 행동을 합니다. 또, 구름도 객체라고 볼 수 있습니다. 크기, 고도, 모양 등의 상태가 있고 움직이거나 비를 내리는 등의 행동을 합니다.

  • 여기서 클래스란 어떠한 속성이 있고 어떻게 행동하는지를 기술한 설계도입니다. 차를 만들기 위해서는 반드시 설계도가 필요합니다. 그 설계도를 보면 이 차에는 어떠한 속성들이 있고 어떻게 동작하는 지를 자세히 설명하고 있습니다. 차 설계도는 차가 아니지만 차 설계도를 보고 차를 만들 수 있습니다. 마찬가지로 클래스도 객체는 아닙니다. 하지만 객체는 클래스로부터 만들어진 겁니다.

1
2
3
4
5
6
7
8
class Car{
	private String name,
	private double speed,
	private Size size;
	...
	public void start() {...}
	public void stop() {...}
	... 
  • Car라는 이름의 클래스를 정의했습니다. 클래스는 속성을 가지고 어떠한 행동을 하는지를 기술한 설계도, 설명서 같은 것입니다.

  • 위의 코드를 보면 먼저 속성을 정의했습니다. 속성에는 모델명이 있고 속도가 있고 차의 크기가 존재합니다. 그리고 차는 출발하기도 하고 멈추기도 하는 여러가지 행동을 합니다. 이렇게 자동차의 속성과 행동들을 정의했습니다.

1
2
3
Car myCar = new Car("니로");
Car yourCar = new Car("소나타");
Car ourCar = new Car("스포티지");
  • 해당 부분은 클래스를 바탕으로 객체를 만드는 것입니다. 그 클래스의 실제 객체. 즉, 실체를 만드는 것입니다. 이 3가지의 객체는 모두 다연히 Car라는 클래스의 타입을 가지게 됩니다.

  • 여기서 객체는 상태 정보를 가진다고 했고 클래스는 속성에 대한 것을 기술한다고 했습니다. 다시 보면 Car에서 속성이라는 것을 기술했고 실제로 속성에 대응하는 모델명에 주목해 보면 이 모델명이 실제로 대응하는 값은 객체마다 다릅니다.

  • 첫 번째 myCar라는 개체 모델명은 니로이고, 두 번째는 소나타, 세번 째는 스포티지라는 모델명을 갖고있습니다. 즉, 각 객체의 이름이 다 다르다는 것을 알 수 있습니다.
  • 속성은 name으로 하나지만 name에 대응하는 상태 정보는 객체마다 다를 수 있습니다.

클래스 : 내가 원하는 속성행동을 구체적으로 기술한 것 객체 : 그렇게 기술한 대로 실체화 된 것

This post is licensed under CC BY 4.0 by the author.