클래스와 객체와 인스턴스의 차이

김세빈·2025년 4월 8일

CS

목록 보기
6/22

클래스, 객체, 인스턴스 — 헷갈리지 말자!

프로그래밍을 처음 배우다 보면 클래스, 객체, 인스턴스라는 개념에서 헷갈리는 경우가 많다. 이 글에서는 이 세 가지 개념을 쉽게 이해할 수 있도록 정리해보았다.

클래스(Class)란?

클래스는 객체를 만들기 위한 설계도 또는 이다.
어떤 속성과 동작(메서드)을 가질지 정의해놓은 것이다.

예를 들어, Person이라는 클래스를 만든다고 하면 이 클래스에는 다음과 같은 것들이 포함될 수 있다:

  • 속성: 이름(name), 나이(age)
  • 메서드: 걷다(walk), 말하다(speak)

즉, 클래스는 아직 만들어지지 않은 '붕어빵'을 위한 '붕어빵 틀'과 같다.

class Person {
    String name;
    int age;

    void speak() {
        System.out.println("Hello!");
    }
}

객체(Object)란?

객체는 클래스를 바탕으로 실제로 만들어진 실체이다.
클래스로부터 만들어진 붕어빵 한 개, 한 개가 바로 객체다.

붕어빵 틀(클래스)에서 팥 100g, 팥 200g이 들어간 붕어빵(객체)이 각각 만들어질 수 있는 것처럼, 같은 클래스로 만들어진 객체들도 속성 값은 서로 다를 수 있다.

Person a = new Person();  // a는 Person 클래스에서 만들어진 객체
a.name = "철수";
a.age = 20;

인스턴스(Instance)란?

인스턴스는 조금 더 메모리 상에서 '객체가 존재하는 상태'를 강조하는 표현이다.
즉, 클래스에서 객체가 생성되어 메모리에 올라가면 그때 우리는 '인스턴스'라고 부른다.

정리하자면 다음과 같다:

  • 클래스 → 설계도
  • 객체 → 설계도로 만든 실제 제품
  • 인스턴스 → 메모리에 올라간 객체
Person a = new Person();  // a는 Person 클래스의 인스턴스
Person b;                 // b는 아직 메모리에 객체가 올라간 상태가 아님 → 인스턴스 아님

메서드(Method)란?

메서드는 클래스 안에 정의된 함수로, 객체가 할 수 있는 동작을 의미한다.
객체의 속성을 바꾸거나, 특정 동작을 수행할 수 있도록 한다.

a.speak();  // "Hello!" 출력

붕어빵 비유로 다시 보기

개념비유
클래스붕어빵 틀
객체붕어빵 (속성 값 다름)
인스턴스메모리에 올라간 붕어빵
메서드붕어빵의 맛을 바꾸는 도구

0개의 댓글