본문 바로가기
프로그래밍

클래스 vs 객체 / 객체 vs 인스턴스

by 로맨틱스터디 2026. 1. 14.
728x90
반응형

 

클래스 vs 객체

1️⃣ 한 줄로 차이 요약

클래스 = 설계도
객체 = 그 설계도로 만든 실제 물건


2️⃣ 현실 비유 (가장 이해 잘 됨)

🏠 으로 비유하면

  • 클래스 = 집 설계도
  • 객체 = 실제로 지어진

설계도만 있다고 사람이 살 수는 없죠?
👉 실제로 지어진 집(객체)이 있어야 사용 가능


🚗 자동차 비유

  • 클래스 = 자동차 모델 설명서
  • 객체 = 내 , 네 차, 옆집 차
자동차 클래스

객체1: 내 차
객체2: 택시
객체3: 렌터카

3️⃣ 코드로 보면 (JavaScript)

클래스

class Car {
  constructor(color) {
    this.color = color;
  }

  drive() {
    console.log("달린다");
  }
}

👉 이건 아직 아무 차도 없음
👉 그냥 “차는 이런 속성/기능을 가진다”는 정의


객체 (인스턴스)

const myCar = new Car("red");
= { color: "red"; drive: () => { console.log("달린다") }
// myCar.color = "red"
// myCar.drive = "달린다"

const taxi = new Car("yellow");
= { color: "yellow"; drive: () => {conosle.log("달린다") }
// myCar.color = "yellow"
// myCar.drive = "달린다"
  • myCar, taxi → 객체
  • new Car() → 설계도로 실물 생성

4️⃣ 클래스 vs 객체 정확한 차이

구분 클래스 객체
정체 설계도 실물
메모리 없음 있음
여러 개 가능? 1개 정의 여러 개 생성
상태 가짐? ✅ ( 보유)
new 사용

5️⃣ 객체는 “상태”를 가진다

myCar.color = "red";
taxi.color = "yellow";
  • 같은 클래스
  • 서로 다른 상태

👉 이게 객체의 핵심


6️⃣ 객체 = 클래스의 복사본?

정확히는 아님

  • 클래스는
  • 객체는 그 틀로 만든 독립적인 존재

객체끼리는 서로 영향 안 줌


7️⃣ 함수랑 비교하면 더 명확해짐

function add(a, b) {
  return a + b;
}

add(1, 2);
// 3
  • 함수 정의 → 클래스 느낌
  • add(1, 2) 실행 결과객체 같은 “실체

(완전히 같진 않지만 감 잡기엔 좋음)


8️⃣ 초보자가 가장 헷갈리는 포인트

❓ “클래스 = 객체 아니야?”

👉 JS에서는 맞는 말 (고급 개념)

class Car {
  constructor(color) {
    this.color = color;
  }

  drive() {
    console.log("달린다");
  }
}

typeof
Car
// "function"
  • JS에선 클래스도 사실 함수 객체
  • 하지만 개념적으로는 구분해서 생각해야 이해 쉬움

9️⃣ 진짜 핵심만 남기면

클래스는 정의,
객체는 정의된 것을 실제로 쓰는 것


다음으로 보통 바로 궁금해지는 게 👇

  • 인스턴스랑 객체 차이
  • 프로토타입이랑 클래스 관계
  • JS에서 클래스가 사실상 함수인 이유

원하면 그 중에서 하나 바로 이어서 설명해줄게.

 


 

객체 vs 인스턴스

 

“거의 같은 말인데, 쓰는 관점이 다르다” 가 정답이에요.


1️⃣ 한 줄 요약

인스턴스 = ‘클래스로부터 만들어졌다는 관계’를 강조한 말이고,
객체 = ‘메모리에 존재하는 실제 대상’을 말한다.

 


2️⃣ 가장 정확한 비유

🍞 비유

  • 클래스 = 붕어빵
  • 객체 = 만들어진 붕어빵
  • 인스턴스 = “이 붕어빵은 저 틀로 찍어낸 거야

👉 인스턴스는 항상 “~의”가 붙음

  • Car의 인스턴스
  • User의 인스턴스

👉 객체는 그냥

  • “이건 객체야”

3️⃣ 코드로 보면

class User { // 클래스 (설계도)
  constructor(name) {
    this.name = name;
  }
}

const u1 = new User("철수"); 
// 객체 (설계도로 만든 '실물') 
// User 클래스의 인스턴스 ('설계도로 만든' 거야)

✔ 객체
✔ User 클래스의 인스턴스

둘 다 맞는 표현


4️⃣ 언제 구분해서 쓰냐?

✔ “인스턴스”를 쓰는 상황

  • 클래스와의 관계를 말할 때
  • 객체 생성 맥락 설명할 때
User 클래스로부터 인스턴스를 생성했다

✔ “객체”를 쓰는 상황

  • 메모리에 존재하는 실체를 말할 때
  • 클래스와 무관하게도 쓰임
const obj = { a: 1 };

👉 이것도 객체지만
👉 어떤 클래스의 인스턴스라고 부르진 않음 (보통)


5️⃣ 중요한 차이 포인트

구분 객체 인스턴스
의미 메모리에 있는 대상 특정 클래스와의 관계 강조
클래스 필요 없어도 됨 반드시 필요
표현 객체다” ~의 인스턴스다”

6️⃣ 그래서 이 문장, 맞아?

“모든 인스턴스는 객체다”

✅ 맞음

“모든 객체는 인스턴스다”

❌ 아님
(JS 객체 리터럴, 함수 객체 등)


7️⃣ JS에서 헷갈리는 포인트 하나

const fn = function() {};
  • fn → 객체
  • ❌ “Function 클래스의 인스턴스”라고는 잘 안 말함
    (개념 설명할 때만 가끔)

8️⃣ 핵심 문장 하나로 끝내면

객체는 결과물,
인스턴스는 출신을 강조한 말


이제 다음 단계로 딱 이어지는 게 👇

  • 프로토타입이 왜 필요한지
  • new가 실제로 하는 일
  • JS에 클래스가 ‘없는 것처럼’ 보이는 이유

어디까지 갈지 말해줘 😄

728x90
반응형