클래스, 객체, 그리고 인스턴스
클래스(Class)
- 객체를 만들어내기 위한 설계도 혹은 틀로서 연관된 변수와 메서드의 집합을 포함합니다.
- 클래스는 개념적인 틀로, 실체화되기 전에는 메모리에 존재하지 않습니다.
- 예를 들어, '자동차' 클래스는 자동차의 공통된 동작을 정의합니다.
객체(Object)
- 소프트웨어 세계에 구현할 대상으로, 클래스에 선언된 모양 그대로 생성된 실체입니다.
- 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 가지며, OOP에서 클래스의 타입으로 선언되었을 때 '객체'라고 부르며 '클래스의 인스턴스(instance)'로도 불립니다.
- '자동차' 클래스로부터 생성된 실제 자동차가 객체입니다.
인스턴스(Instance)
- 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체로, 객체를 소프트웨어에 실체화하면 그것을 '인스턴스'라고 부릅니다.
- 인스턴스는 메모리에 할당되며, 객체에 속한다고 볼 수 있습니다.
- 추상적인 개념(또는 명세)과 구체적인 객체 사이의 관계에 초점을 맞출 때 사용하며, '~의 인스턴스' 형태로 표현된다.
-
- 객체는 클래스의 인스턴스
- 객체 간의 링크는 클래스 간의 연관 관계의 인스턴스
- 실행 프로세스는 프로그램의 인스턴스
클래스, 객체, 인스턴스의 차이
클래스 vs. 객체
- 클래스는 '설계도', 객체는 '설계도로 구현한 모든 대상'을 의미합니다.
- ex. '자동차' 클래스는 설계도이고, 실제로 만들어진 자동차는 객체입니다.
객체 vs. 인스턴스
- 클래스의 타입으로 선언된다면 객체, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부릅니다.
- 객체는 현실 세계에 가깝고, 인스턴스는 소프트웨어 세계에 가깝습니다.
- 객체는 '실체', 인스턴스는 '관계'에 집중합니다.
- 객체를 '클래스의 인스턴스'라고 부릅니다.
추상화 기법
i. 분류 (Classification)
- 객체를 인스턴스로 바꾸는 과정으로, 공통된 속성을 가진 객체들을 범주로 묶습니다.
- ex. '포유류' 클래스는 고양이, 강아지 등을 분류할 때 사용합니다.
ii. 인스턴스화 (Instantiation)
- 클래스를 인스턴스로 바꾸는 과정으로, 범주나 개념으로부터 실재하는 객체를 만드는 것입니다.
- ex. 클래스 내의 객체에 대해 특정한 변형을 정의하고, 이름을 붙인 뒤 그것을 물리적인 어떤 장소에 위치시키는 작업을 통해 인스턴스를 만드는 것.
- '예시(Exemplification'이라고 부름
Q1. 클래스와 객체, 인스턴스의 차이에 대해 설명해주세요.
더보기
클래스는 설계도, 객체는 클래스의 타입으로 생성된 실체, 그리고 인스턴스는 그 객체가 메모리에 할당되어 실제 사용되는 것을 의미합니다. 객체는 현실 세계에 가깝고, 인스턴스는 소프트웨어 세계에 가깝습니다.
Q2. 추상화 기법인 분류와 인스턴스화에 대해 설명해주세요.
더보기
분류는 객체를 인스턴스로 변환하는 과정으로, 공통된 속성을 가진 객체들을 범주로 묶는 것입니다. 고양이, 강아지 등을 '포유류'로 분류하는 것과 동일합니다.
반면, 인스턴스화는 클래스를 인스턴스로 변환하는 과정으로, 범주나 개념으로부터 실재하는 객체를 만드는 것입니다. '자동차' 클래스로부터 실제 자동차를 만드는 것을 인스턴스화라고 할 수 있습니다.
참고 자료
- 클래스(class), 객체(Object), 인스턴스(Instance)의 차이점. [ Java & OOP 면접 질문1]
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] CheckedExceptin과 UncheckedException (0) | 2024.02.05 |
---|---|
[Java] 인터페이스와 추상 클래스의 차이 (1) | 2024.02.01 |
[Java] OOP의 5가지 원칙 (SOLID) (0) | 2024.01.25 |
[Java] OOP의 4가지 특징 (0) | 2024.01.23 |
[Java] 자바 접근 제어자의 유형과 특징 (0) | 2024.01.22 |