객체(Object)란?
- 현실를 모방하여 소프트웨어로 꾸며낼 대상, 결과물
- 클래스의 인스턴스를 객체라고도 한다.
클래스(Class)란?
- 객체를 만들기 위한 코드다.
인스턴스(Instance)
- 클래스가 메모리에 적재되면 인스턴스가 된다.
- 메모리에 할당된 객체
포커카드를 소프트웨어로 만든다고 가정해보자. (현실을 소프트웨어로 만들 대상 = 객체 = 포커카드)
포커카드는 기본적인 정보(카드의 크기, 색갈, 숫자, 문양)가 존재한다.
카드의 기본적인 정보를 받을 수 있는 코드 = 클래스 (카드라는 객체를 만들기 위한 설계도)
카드의 기본적인 정보를 입력받아 완성된 카드 = 클래스의 인스턴스 (입력받아 완성되다 = 메모리 할당)
카드라는 객체를 만들기 위한 클래스에 메모리가 할당되면 인스턴스가 된다.
착각하기 쉬운 부분
그렇다면 객체란 인스턴스인가?
결론은 아니다. 인스턴스는 객체가 소프트웨어 속에 만들어진 결과물이다.
내가 만드려고 한 객체는 포커카드지만 인스턴스는 각각의 숫자가 다른 카드들이다.
생성된 각각의 포커카드(인스턴스)를 객체라고 표현할 수 있지만, 메모리 할당전 내가 만드려는 포커카드(객체)는 인스턴스가 될 수 없다.
즉, 객체와 인스턴스는 동일하지 않다.
객체는 추상적인 부분이 존재하며, 여러가지의 특징을 갖는다.
인스턴스는 소프트웨어속에서 메모리를 할당하여(인스턴스화) 실체화된 객체이다.
설계단계가 아닌경우 인스턴스를 추상적인 단어로 표현할 필요는 없다고 생각한다.
'Java & Spring Boot' 카테고리의 다른 글
Repository 테스트 @AutoConfigureJsonTesters (2) | 2023.12.05 |
---|---|
서블릿 필터 & 스프링 인터셉터 (0) | 2022.10.04 |
자바에서 효율적으로 Exception 커스텀하기 (0) | 2022.02.08 |
H2 In-memory 사용시 delete log 확인 (0) | 2021.11.25 |
기본 클래스 org.gradle.wrapper.GradleWrapperMain을(를) 찾거나 로드할 수 없습니다. (0) | 2021.11.04 |