클래스(Class)
- 객체를 만들어내기 위한 설계도
- 유사한 특징을 지닌 객체들을 추상화 하여 변수(속성)와 메서드(행위)로 묶어 정의한 집합체
객체(Object)
- 소프트웨어 세계에 구현할 대상
- 클래스에 선언된 형태로 생성될 실체
- 모든 인스턴스를 포함하는 포괄적인 의미
- 클래스의 인스턴스라고도 불림
- 클래스의 타입으로 선언되었을 때 객체라고 불린다.
인스턴스(Instance)
- 소프트웨어 세계에 구현된 실체
- 어떤 원본(추상적인 개념)으로부터 생성된 복제본
- OOP에서는 클래스(설계도)를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
- 실체화된 인스턴스는 메모리에 할당
- 인스턴스는 객체에 포함된다.
- 객체가 메모리에 할당되어 실제 사용될 때 '인스턴스'라고 불린다.
클래스, 객체, 인스턴스 비교
- 클래스는 설계도
- 객체는 설계도로부터 구현된 모든 대상
- 인스턴스는 객체가 메모리에 할당되어 실제 사용되는 실체
- 주의할 점
- 개념적으로 인스턴스는 객체에 포함된다고 볼 수 있기에 객체와 인스턴스는 어느정도 통용되어 쓰이지만, 클래스와 객체/인스턴스는 명확히 구분하여 사용해야 한다!
- 다시 한번, 클래스는 설계도, 객체와 인스턴스는 구현할 대상 또는 구현된 실체이다.
분류(Classification)와 인스턴스화(Instantiation)
- 분류
- 객체 -> 클래스
- 실재하는 객체들을 공통적인 속성과 메소드를 공유하는 범주나 추상적인 개념(클래스)로 묶는 것
- 인스턴스화
- 클래스 -> 인스턴스
- 범주나 추상적인 개념으로부터 실재하는 객체(각각은 인스턴스)를 만드는 과정
참고
https://cerulean85.tistory.com/149
https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html
'Backend > 🌏OOP' 카테고리의 다른 글
[OOP] 의존성 주입 (0) | 2021.11.16 |
---|---|
[OOP] 객체 지향 프로그래밍이란? (0) | 2021.11.16 |