Q. Class, Object, Instance의 차이점을 설명해주세요.
글 작성자: 택시 운전사
반응형
Q. Class, Object, Instance의 차이점을 설명해주세요.**
Goal
- Class, Object, Instance의 개념을 설명할 수 있다.
- Class, Object, Instance의 차이를 이해할 수 있다.
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(예시)라고도 부른다.
반응형
'Language > Java' 카테고리의 다른 글
Q. Overriding과 Overloading의 차이점을 설명해주세요. (0) | 2018.12.22 |
---|