JAVA SCRIPT

[일반] 객체, 클래스, 인스턴스의 개념

해봄코딩 2023. 1. 9. 21:45

 

 

종종  클래스, 오브젝트, 인스턴스라는 용어를 들어본적이 있습니다.  

대체 클래스, 오브젝트, 인스턴스가 뭘까요? 

 

 

요약하자면,

🔶 객체(Object)는 상태(state)와 행동(behavior)의 묶음입니다. 

🔶 클래스(Class)는 생성된 객체의 설계도(blueprint)나 프로토타입(Prototype)입니다. 

🔶 인스턴스(Instance)는 클래스의 유니크한 유닛을 말합니다. 

 

 

무... 무슨 소리인지요? 

하나씩 세밀하게 들여다봅시다. 

 

 


📌 객체(Object)

현실의 객체(object)는 두가지 특성을 가지고 있습니다. 

인간을 예로 들어본다면, 상태(state, 이름과 나이 키, 몸무게 등등..)와 행동(뛴다. 잔다, 먹는다)로 나뉩니다.

자동차를 예로 들어본다면, 상태(현재 스피드, 기어 상태) 와 행동(브레이크 적용, 기어 변속)로 나뉩니다. 

소프트웨어의 객체(object)도 현실의 객체와 유사하게 상태와 행동으로 구성되어 있습니다. 

객체는 상태와 메소드를 통해 행동을 드러납니다. 

 

예를 들면, 이름, 나이, 과목과 같은 정보를 가진 학생(객체)의 정보를 담은 설계도(클래스)가 있습니다. 

여기 학생이 2명(호석, 윤기)이 있다면  학생(객체)인 호석이와 윤기라는  인스턴스가 두 개 생깁니다. 

 

 


📌  클래스(Class)

클래스는  객체들을 생성하기 위한  템플릿(template), 설계도(Blueprint)를 말합니다. 

기본적으로 필드, 스태틱필드, 스태틱 메소드와 컨스터럭터(Constructor, 생성자)로 구성됩니다. 

* 필드는 클래스의 상태로 사용합니다. 

* 메소드는 클래스의 행동을 대표하곤 합니다. 

* 컨스터럭터(생성자)는 클래스의 새로운 인스턴스를 만들기 위해 사용하곤 합니다. 
* ES6에 새로 추가된 문법이다. 

 

 


📌  인스턴스(Instance) 

 

인스턴트는 오브젝트로 대표하는 클래스의 유일한 카피본입니다. 

생성된 클래스의 인스턴스가 생성되었을때 JVM(Java Virtual Machine, 자바가상머신)은 클래스 인스턴스의 메모리 공간을 할당합니다. (🧒 으헉!  JVM 처음보는 단어가 나왔군요! 나중에 공부합시다) 

 

 


📌  정리 

 

객체(Object)는 소프트웨어 세계에 구현할 대상이고, 
이를 구현하기 위한 설계도가 클래스(Class), 
이 설계도에 따라 소프트웨어 세계에 구현된 실체가 인스턴스(Instance)입니다. 

 

객체는 현실의 대상과 비슷하여 상태와 행동을 가지지만, 

소프트웨어 관점에서 그저 컨셉, 즉 사유의 결과입니다. 

소프트웨어에서 객체를 구현하기 위해서 컨셉 이상의 많은 것들을 생각해서 구현해야 하므로 

이를 위한 설계도로 클래스를 작성해야 합니다. 

설계도를 바탕으로 객체를 소프트웨어에 실체화하면 그게 인스턴스가 되고요.  

이 실체화된 인스턴스는 그제서야 메모리에 할당이 됩니다. 

 

객체가 거의 인스턴스와 비슷한 개념이라고 생각하면 될 것 같습니다. 

붕어빵틀과 붕어빵의 관계

 

 

 

아래 블로그에서 참고해서 정리했습니다. 감사합니다~ 🙏🙏🙏

https://cerulean85.tistory.com/149

 

객체와 인스턴스의 차이

* 자의적인 해석이므로 논란의 여지가 있음 객체와 인스턴스의 차이를 알아보니 블로그마다 말이 다르다. 어떤 블로거는 인스턴스는 객체와 같지만, 관계적인 측면에서 이야기할 때 객체 대신

cerulean85.tistory.com

 

아항!  이제야 좀 이해가 갑니다! 

'JAVA SCRIPT' 카테고리의 다른 글

[JS] getComputedStyle와 getPropertyValue  (0) 2023.01.26
[JS] JSON  (0) 2023.01.14
[JS] 쌍따옴표(")와 홑따옴표(')에 대해서  (0) 2023.01.05
[JS] 화살표 함수  (0) 2022.12.27
[JS] 객체 구조 분해 할당 (Object Destructuring)  (2) 2022.12.26