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

윤준혁·2024년 10월 7일

클래스, 객체, 인스턴스는 객체 지향 프로그래밍에서 중요한 개념들입니다. 이 세 가지는 서로 밀접하게 관련이 있지만, 각각의 역할과 의미는 다릅니다.

클래스(Class)

개념

  • 객체를 정의하기 위한 설계도
  • 클래스는 객체의 속성과 행동을 정의. 즉, 클래스는 객체가 가져야 할 특성과 동작을 미리 정의한 추상적인 개념
  • 현실 세계에서 클래스는 집을 짓기 위한 도면에 비유될 수 있음

특징

  • 속성 : 객체가 가질 수 있는 데이터(변수, 필드)를 정의
  • 메서드 : 객체가 수행할 수 있는 행동(함수)을 정의
  • 재사용성 : 클래스를 사용하면 동일한 속성과 동작을 가진 여러 객체를 만들 수 있음

객체(Object)

개념

  • 클래스에 의해 정의된 속성과 행동을 가진 실제 존재
  • 클래스가 설계도라면, 객체는 그 설계도를 기반으로 만들어진 실체. 즉, 객체는 메모리 상에 존재하며, 클래스에서 정의한 속성값을 가지고 특정한 행동을 할 수 있는 개체
  • 클래스를 기반으로 하나 이상의 객체를 생성할 수 있으며, 각각의 객체는 독립된 속성 값을 가질 수 있음

인스턴스(Instance)

개념

  • 클래스를 통해 실제로 만들어진 객체. 즉, 인스턴스는 특정 클래스의 객체
  • 클래스와 객체의 관게에서, 객체는 하나의 개념이지만, 인스턴스는 특정 클래스의 객체라는 더 구체적인 의미를 가짐
  • 클래스는 그 자체로는 실행되지 않으며, 메모리에 올라와 실제로 동작하는 것은 클래스를 기반으로 생성된 인스턴스(객체)임. 클래스는 객체의 템플릿, 객체는 클래스의 인스턴스인 것

차이점 요약

  • 클래스는 설계도: 현실 세계에서 클래스는 자동차나 건물의 설계도와 같습니다. 설계도에는 구조, 크기, 색상 등과 같은 특성들이 정의되어 있습니다.
  • 객체는 설계도로부터 만들어진 실체: 설계도를 기반으로 실제로 만들어진 자동차나 집을 생각해 보면 됩니다. 객체는 그 실체로, 메모리에 존재하며 그 속성과 동작을 수행할 수 있습니다.
  • 인스턴스는 특정 설계도로부터 만들어진 실체: 객체라는 일반적인 개념이 아니라, '이 객체는 Car 설계도를 기반으로 만들어졌다'는 구체적인 설명이 필요할 때, 우리는 그 객체를 Car 클래스의 인스턴스라고 부릅니다.

0개의 댓글