◇ PART · SPRING

클래스 vs 인스턴스

객체가 메모리에 만들어지는 방식

학습 목표

  • 클래스와 인스턴스의 관계를 안다
  • 하나의 클래스로 여러 인스턴스가 만들어짐을 안다
  • 각 인스턴스가 독립된 데이터를 갖는다는 사실을 안다

⚠️ 어디가 답답한가

자주 듣는 질문

"new User() 를 두 번 하면 같은 거 만든 건가요? 아니면 다른 거예요?"

🛠️ 비유 — 설계도와 제품

클래스 = 설계도 / 인스턴스 = 제품

클래스는 「아이폰 설계도」, 인스턴스는 그 설계도로 찍어낸 「내 폰·친구 폰·언니 폰」.

class User { String name; } ← 설계도 │ ▼ new User() → user1 (Alice) ← 제품 1 new User() → user2 (Bob) ← 제품 2 new User() → user3 (Carol) ← 제품 3 각자 독립된 메모리

코드로 확인


class User {
    String name;
}

User u1 = new User();  // 인스턴스 1
u1.name = "Alice";

User u2 = new User();  // 인스턴스 2 (별개)
u2.name = "Bob";

System.out.println(u1.name);  // Alice
System.out.println(u2.name);  // Bob (서로 영향 없음)

왜 중요한가

Spring 의 거의 모든 객체는 인스턴스입니다. Spring 컨테이너가 클래스를 보고 「인스턴스를 하나 만들어 보관」해주는 게 다음 차시들의 핵심입니다.

🔄 Before / After

전 차시 끝

인자가 어떻게 복사되는지는 안다. 객체가 어떻게 만들어지는지는 모름.

이번 차시 끝

클래스 한 개로 인스턴스 여러 개가 만들어지고, 각자 독립된 데이터를 가진다는 걸 안다.

이번 차시의 데이터 흐름

클래스
(설계도)
인스턴스 1
인스턴스 2
...
자바 객체의 「실체」가 메모리에 어떻게 자리잡는지 보였습니다

정리

오늘 들고 가는 것

  • 클래스 = 설계도 / 인스턴스 = 제품
  • 한 클래스로 인스턴스 여러 개
  • 각자 독립된 메모리·데이터

다음: ◆ new 의 함정 — 직접 객체 만들기의 한계.