728x90
반응형
Class, Object, Instance의 개념
Class란?
- 개념
- Obejct를 만들어 내기 위한 설계도 혹은 틀
- 연관되어 있는 Variable와 Method의 집합
Object란?
- 개념
- 소프트웨어 세계에 구현할 대상
- Class에 선언 된 모양 그대로 생성된 실체
- 특징
- 'Class의 Instance'라고도 부른다.
- Object는 모든 Instance를 대표하는 포괄적인 의미를 갖는다.
- OOP의 관점에서 Class의 타입으로 선언되었을 때 'Object'라고 부른다.
Instance란?
- 개념
- 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
- 즉, 객체를 소프트웨어에 실체화 하면 그것을 'Instance'라고 부른다.
- 실체화된 Instance는 메모리에 할당된다.
- 특징
- Instance는 Object에 포함된다고 볼 수 있다.
- OOP의 관점에서 Object가 메모리에 할당되어 실제 사용될 때 'Instance'라고 부른다.
- 추상적인 개념(또는 명세)과 구체적인 Object 사이의 관계에 초점을 맞출 경우에 사용한다.
- '~의 Instance'의 형태로 사용된다.
- Object는 Class의 Instance이다.
- Object 간의 링크는 Class 간의 연관 관계의 Instance이다.
- 실행 프로세스는 프로그램의 Instance이다..
- 즉, Instance라는 용어는 반드시 Class와 Object 사이의 관계로 한정지어 사용할 필요는 없다.
- 인스턴스는 어떤 원본(추상적인 개념)으로부터 '생성된 복제본'을 의미한다.
예시
|
/* Animal Class */ |
|
public class Animal { |
|
... |
|
} |
|
/* Object와 Instance */ |
|
public class Main { |
|
public static void main(String[] args) { |
|
Animal cat, dog; // 'Object' |
|
|
|
// Instance화 |
|
cat = new Animal(); // cat은 Animal Class의 'Instance'(Object를 메모리에 할당) |
|
dog = new Animal(); // dog은 Animal Class의 'Instance'(Object를 메모리에 할당) |
|
} |
|
} |
Class, Object, Instance의 차이
Class VS Object
- Class는 설계도, Object는 설계도로 구현한 모든 대상을 의미한다.
Obejct VS Instance
- Class의 타입으로 선언되었을 때, Object라 부르고, 그 Object가 메모리에 할당되어 실제 사용될 때 Instance라고 부른다.
- Object는 현실 세계에 가깝고, Instance는 소프트웨어 세계에 가깝다.
- Object는 실체, Instance는 관계에 초점을 맞춘다.
- Object를 Class의 Instance라고도 부른다.
- Instance화하여 레퍼런스를 할당한 Object를 Instance라고 말하지만, 이는 원본(추상적인 개념)으로부터 생성되었다는 것에 의미를 부여하는 것일 뿐 엄격하게 Object와 Instance를 나누긴 어렵다.
참고
- 추상화 기법
- Classification(분류)
- Object → Class
- 실재하는 Object들을 공통적인 속성을 공유하는 범위 또는 추상적인 개념으로 묶는 것
- Instantiation(인스턴스화)
- Class → Instance
- Classification의 반대 개념, 범주나 개념으로부터 실재하는 객체를 만드는 과정
- 구체적인 Class 내의 Object에 대해 특정한 변형을 정의하고, 이름을 붙인 다음, 그것을 물리적인 어떤 장소에 위치시키는 등의 작업을 통해 Instance를 만드는 것을 말한다.
- Exemplification(예시)라고도 부른다.
출처: https://geonlee.tistory.com/11?category=312902 [빠리의 택시 운전사:티스토리]
728x90
반응형
'JAVA > Java TPC(생각하고, 표현하고, 코딩하고)' 카테고리의 다른 글
[JAVA] Part 1. 학습 정리 (0) | 2022.07.19 |
---|---|
[JAVA] 잘 설계된 클래스(DTO, VO) (0) | 2022.07.19 |
[JAVA] 객체 생성 과정(new, 생성자 메서드, this) (0) | 2022.07.18 |
[JAVA] 기본자료형(PDT) vs 사용자정의자료형(UDDT) (0) | 2022.07.17 |
[JAVA] JVM의 메모리 모델(JVM이 사용하는 메모리 영역 - 4가지) (0) | 2022.07.17 |