클래스 & 객체

기술노트

🏛️ 클래스 (Class) & 객체 (Object)

클래스객체는 객체 지향 프로그래밍(OOP)의 가장 근본적인 개념입니다. 이 둘의 관계는 보통 '붕어빵 틀'과 '붕어빵'에 비유됩니다.


📜 클래스 (Class)

클래스는 객체를 만들어내기 위한 설계도 또는 템플릿입니다. 클래스에는 객체가 가지게 될 속성(데이터)과 기능(메서드)이 정의되어 있습니다.

  • 예시 : `자동차` 라는 클래스는 `색상`, `속도`와 같은 속성과 `전진하다()`, `정지하다()`와 같은 기능을 가질 수 있다고 정의한 설계도입니다.
  • 클래스는 설계도일 뿐, 그 자체로 메모리에 공간을 차지하거나 실제적인 역할을 하지는 않습니다.

🚗 객체 (Object)

객체는 클래스라는 설계도를 바탕으로, 메모리에 실제로 구현된 실체입니다. 클래스로부터 만들어진 각각의 객체를 '인스턴스(Instance)'라고도 부릅니다.

  • 예시 : `자동차` 클래스로부터 `파란색 소나타`, `빨간색 페라리`와 같은 각각의 자동차 객체를 만들어낼 수 있습니다. 이 객체들은 모두 `자동차` 클래스에 정의된 속성과 기능을 가지지만, 각자의 고유한 상태(`색상=파랑`, `색상=빨강`)를 가집니다.
  • 객체는 메모리에 실제로 공간을 할당받고, 자신만의 데이터를 가지며, 클래스에 정의된 행동을 수행합니다.

⚙️ 인스턴스화 (Instantiation)

클래스로부터 객체를 만드는 과정을 인스턴스화라고 합니다. 대부분의 언어에서 `new` 키워드를 사용하여 클래스의 생성자(Constructor)를 호출함으로써 객체를 생성합니다.

```java // Car 클래스로부터 myCar 라는 이름의 객체(인스턴스)를 생성 Car myCar = new Car(); ```


💡 개발자 핵심 Point

  • 클래스는 추상적인 '개념'이고, 객체는 그 개념을 바탕으로 만들어진 구체적인 '실체'입니다.
  • 하나의 클래스로부터 수많은 객체를 만들어낼 수 있으며, 각 객체는 서로 독립적입니다.
  • 객체 지향 프로그래밍은 잘 설계된 클래스를 바탕으로, 객체들 간의 상호작용을 통해 전체 프로그램을 완성해 나가는 방식입니다.