DeveloPiano

[Spring] 인스턴스화에 대해서 클래스, 객체와 비교해보기 본문

Develop/Spring

[Spring] 인스턴스화에 대해서 클래스, 객체와 비교해보기

DevPi 2025. 4. 17. 13:52
반응형

 

프로그래밍을 처음 배우기 시작하면 자주 듣게 되는 용어 중 하나가 바로 "인스턴스화(Instantiation)"입니다. 이 용어는 특히 객체지향 프로그래밍(OOP)에서 중요한 개념이며, 클래스(class), 객체(object), 그리고 인스턴스(instance)와 밀접한 관계를 가지고 있습니다. 이 글에서는 인스턴스화가 무엇인지, 그리고 클래스, 객체, 인스턴스와 어떤 관계가 있는지를 쉽게 설명해보겠습니다.


클래스(Class)란?

클래스는 설계도 또는 이라고 생각할 수 있습니다. 어떤 대상을 코드로 모델링할 때, 그 대상이 가질 수 있는 속성(변수)과 행동(함수)을 정의해놓은 구조입니다.

class Car(val color: String, val speed: Int) {
    fun drive() {
        println("Driving...")
    }
}

위 코드는 Car라는 클래스의 예시입니다. 자동차가 어떤 색상인지(color), 속도는 얼마인지(speed) 속성을 가지고 있으며, drive()라는 기능을 수행할 수 있습니다.


객체(Object)란?

객체는 클래스를 바탕으로 실제 메모리에 만들어진 실체입니다. 다시 말해, 클래스는 설계도이고, 객체는 그 설계도로 만든 실제 제품입니다.

val myCar = Car("red", 120)

여기서 myCar는 Car 클래스의 인스턴스, 즉 객체입니다.


인스턴스화(Instantiation)란?

"인스턴스화 한다"는 것은 클래스를 바탕으로 객체를 생성하는 과정을 말합니다. 즉, 클래스라는 설계도를 이용해서 실제로 메모리에 올려 사용할 수 있는 객체를 만드는 것이 바로 인스턴스화입니다.

위 예시에서 다음 코드가 바로 인스턴스화입니다:

val myCar = Car("red", 120)

이 한 줄의 코드가 Car 클래스의 인스턴스를 생성(인스턴스화) 하는 코드입니다.


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

개념 설명
클래스 객체를 만들기 위한 설계도
객체 클래스를 기반으로 생성된 실체
인스턴스화 클래스로부터 객체를 생성하는 과정
  • 클래스는 아직 메모리에 존재하지 않음
  • 인스턴스화 과정을 거쳐야만 실제 사용할 수 있는 객체가 됨

왜 인스턴스화가 중요한가?

  • 여러 객체를 동일한 구조로 생성할 수 있음 (재사용성)
  • 유지보수 및 확장에 유리함
  • 객체지향 프로그래밍의 핵심 개념을 이해하는 데 중요한 출발점

그렇다면 "인스턴스"는 무엇일까요?

클래스로부터 객체를 생성하는 과정을 인스턴스화라고 부른다면, 그렇게 생성된 객체 자체를 우리는 '인스턴스(instance)'라고 부릅니다.

이렇게 보면 객체와 같은 의미로 보이는데 인스턴스는 객체와 어떤 차이가 있을까요?


인스턴스(Instance)란?

인스턴스는 클래스를 기반으로 생성된 실제 객체를 말합니다. 즉, 클래스의 실체이며, 메모리에 올라가 실제 동작할 수 있는 형태가 된 것입니다.

val myCar = Car("blue", 150) // ← 이게 인스턴스

여기서 Car는 클래스이고, myCar는 Car 클래스의 인스턴스, 즉 객체입니다.


객체 vs 인스턴스

이 둘은 거의 같은 의미로 쓰이지만, 사용되는 맥락에 따라 조금씩 다르게 느껴질 수 있습니다:

용어주로 쓰이는 맥락의미

객체 (Object) 일반적인 코드나 개념 설명 클래스로부터 만들어진 실체
인스턴스 (Instance) 클래스와의 관계를 강조할 때 특정 클래스에서 생성된 객체

예를 들어, "객체는 클래스의 인스턴스다"라는 문장은 클래스와 객체의 관계를 명확히 설명하는 표현입니다.


마무리 정리

  • 클래스는 설계도
  • 객체는 설계도를 바탕으로 만들어진 실체
  • 인스턴스는 그 객체를 클래스와 연결 지어 설명하는 표현
  • 인스턴스화는 클래스에서 객체(인스턴스)를 생성하는 과정

프로그래밍 초반에는 이 개념이 다소 추상적으로 느껴질 수 있지만, 실제로 코드를 작성하면서 다양한 객체를 생성하고 다뤄보면 자연스럽게 익숙해지게 됩니다.

반응형