본문 바로가기
Java & Spring Boot

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

by 향각산 2022. 7. 18.

객체(Object)란?

- 현실를 모방하여 소프트웨어로 꾸며낼 대상, 결과물

- 클래스의 인스턴스를 객체라고도 한다.

 

클래스(Class)란?

- 객체를 만들기 위한 코드다.

 

인스턴스(Instance)

- 클래스가 메모리에 적재되면 인스턴스가 된다.

- 메모리에 할당된 객체

 

포커카드를 소프트웨어로 만든다고 가정해보자. (현실을 소프트웨어로 만들 대상 = 객체 = 포커카드)

포커카드는 기본적인 정보(카드의 크기, 색갈, 숫자, 문양)가 존재한다.

카드의 기본적인 정보를 받을 수 있는 코드 = 클래스 (카드라는 객체를 만들기 위한 설계도)

카드의 기본적인 정보를 입력받아 완성된 카드 = 클래스의 인스턴스 (입력받아 완성되다 = 메모리 할당) 

카드라는 객체를 만들기 위한 클래스에 메모리가 할당되면 인스턴스가 된다. 

 

착각하기 쉬운 부분

그렇다면 객체란 인스턴스인가?

결론은 아니다. 인스턴스는 객체가 소프트웨어 속에 만들어진 결과물이다.

내가 만드려고 한 객체는 포커카드지만 인스턴스는 각각의 숫자가 다른 카드들이다.

생성된 각각의 포커카드(인스턴스)를 객체라고 표현할 수 있지만, 메모리 할당전 내가 만드려는 포커카드(객체)는 인스턴스가 될 수 없다.

즉, 객체와 인스턴스는 동일하지 않다.

 

객체는 추상적인 부분이 존재하며, 여러가지의 특징을 갖는다.

인스턴스는 소프트웨어속에서 메모리를 할당하여(인스턴스화) 실체화된 객체이다.

설계단계가 아닌경우 인스턴스를 추상적인 단어로 표현할 필요는 없다고 생각한다.