객체지향 프로그래밍에 자주 등장하는 용어인 클래스, 객체, 인스턴스 이 세가지 개념에 대해서 알아보자.
1️⃣ 클래스(Class)란?
클래스는 객체를 만들기 위한 '설계도' 또는 '청사진'이다. 실제 데이터나 동작이 정의되어 있고 그것을 사용하려면 클래스를 바탕으로 객체를 생성해야한다. 즉, 클래스는 추상적인 개념이며, 속성과 메서드를 정의하는 틀을 말한다.
예를 들어, 차에 빗대어 보자.
class Car {
String model;
int year;
}
여기서 살펴보면 Car라는 클래스가 정의되어있다. 하지만 이 자체로는 어떤 값도 가지고 있지 않다. 그냥 설계도에 불과하다.
2️⃣ 객체(Object)란?
객체는 클래스로부터 생성된 실제 존재하는 개체이다. 클래스라는 설계도를 바탕으로 메모리 공간에 할당된 실체가 바로 객체인 것이다. 즉, 객체는 클래스를 기반으로 만들어진 실체이다.
Car myCar = new Car();
이렇게 위에 Car 클래스에서 객체를 선언했다. 이제 Car 클래스가 정의된 속성을 가지고 실질적으로 사용할 수 있는 객체가 만들어진 것이다.
3️⃣ 인스턴스(Instance)란?
인스턴스는 객체와 유사한 개념이다. 하지만 더 구체적으로는 특정 클래스에서 생성된 하나의 실체를 의미한다. 객체는 클래스에서 만들어지는 모든 개체를 아우르는 반면에, 인스턴스는 그 중에서도 특정 객체를 지칭하는 용어로 사용된다.
🔊 클래스 vs 객체 vs 인스턴스
정리해보면, 클래스는 설계도이고, 객체는 그 설계도를 바탕으로 만들어진 실제 객체이다. 그리고 객체는 클래스의 실체화된 모든 개체를 의미하고, 인스턴스는 그 중에서 특정한 하나의 개체를 가리킨다. 모든 인스턴스는 객체이다. 하지만 모든 객체는 인스턴스라고 부르는 것은 아니다.
📑 붕어빵 틀로 비유해볼까?
많은 사람들이 붕어빵 틀로 위 3가지 개념을 비유한다.
우리가 붕어빵을 만들려면, 틀이 필요하다. 이 틀이 바로 클래스이다! 그리고 이 틀로 만들어진 붕어빵이 바로 객체이다. 이 객체에는 들어가있는 값이 다를것이다. 그리고 인스턴스는 특정한 붕어빵 하나를 말한다.
🔥 최종 정리
클래스 : 설계도
객체 : 그 설계도로 만들어진 실체
인스턴스 : 그 실체 중 하나
'📚 CS > 그 외' 카테고리의 다른 글
| [CS] 디자인 패턴 - 생성패턴 (3) | 2024.11.19 |
|---|---|
| GitHub의 동작 원리, 작업 공간 (2) | 2024.11.02 |
| JSON - 직렬화, 역직렬화 (0) | 2024.09.23 |
| [CS] 디자인 패턴 (3) - MVVM (0) | 2024.06.23 |
| [CS] 디자인 패턴 (2) - MVP (0) | 2024.06.07 |