목록으로 돌아가기

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

학습목표

객체지향에서 많이 사용되는 개념으로 클래스, 객체, 인스턴스가 있다. 이들의 차이는 뭘까?

한줄요약

클래스 : ‘설계도’
객체는 ‘설계도로 만든 실체(메모리에 생성된 것)’
인스턴스 : ‘어떤 설계도로 만들었는지 그 관계를 명시하는 실체’

images

클래스 객체 인스턴스
객체를 만들기 위한 설계도
- 객체들이 공유하는 특성 (속성/메소드)을 정의
- 그 자체로 데이터를 가진 실체는 아님
클래스를 바탕으로 new 연산자를 통해 메모리에 올라간 실체
- 그 자체로 데이터라 실제로 사용할 수 있음
특정 클래스로부터 new 연산자를 통해 메모리에 생성된 실체
- 객체와 거의 동일하나, ‘특정 클래스로부터 생성된 객체’라는 관계를 강조
- (객체: 포괄적 개념 / 인스턴스: 구현적 개념)

Intro

먼저 객체지향에 대해 이야기해보자면

  • 객체지향 : 객체끼리의 상호작용릴레이션(관계)로 요구사항을 해결하는 것

클래스

  • 이 객체를 만들기 위해선 설계도가 필요하다. → 그리고 그 설계도가 바로 클래스이다.
  • 클래스는 여러 객체들이 공유하는 특성울 속성과 메소드로 정의한다.
  • 클래스 자체는 설계도일 뿐, 그 자체로 데이터를 가진 실체가 되는 것은 아니다.

객체

  • 그 설계도인 클래스를 바탕으로, new 연산자를 통해 메모리에 올라가서 만들어진 실체.
  • 그 자체로 데이터가 되어 이제 실제로 사용할 수 있는 것이 객체이다.

인스턴스

  • 인스턴스는 특정 클래스로부터 new 연산자를 통해 메모리에 생성된 실체를 의미한다.
  • 객체와 거의 동일한 의미로 쓰이지만, ‘특정 클래스로부터 생성된’라는 관계를 강조할 때 사용한다.
    • 객체는 그냥 “물건” (e.g., “저기 붕어빵이 있네.”)
    • 인스턴스는 “출신을 밝히는 물건” (e.g., “저건 ‘그 붕어빵 틀’로 찍어낸 붕어빵이네.”)
  • 예를 들어, Car 클래스를 만들고 myCar라는 객체를 생성했다면, myCar는 인스턴스다’라고 단독으로 쓰기보다 ‘myCarCar 인스턴스다’처럼 ~의 라는 소속 관계를 밝힐 때 주로 사용한다.

      Car myCar = new Car()
    

댓글남기기