I LEARNED/TIL

[TIL] 클래스, 객체, 인스턴스 개념 다시 한 번 보기

veganwithbacon 2022. 10. 18. 18:08
반응형

CS스터디를 하며 여러 종류의 패턴들에 대해 공부했는데, 같이 스터디를 하는 분에게 자바 코드를 설명하는 과정에서 내가 정확히 알지 못하는 것을 알았다.

결론은 클래스,객체,인스턴스에 대한 개념이 혼동되어 다시 한 번 정리하게 됐다.

 

요약부터 짧게 하겠다

그냥 이런거구나 정도만 알고 싶다면 위에 세 개만 보면 되겠다.

 

✅ 클래스, 객체, 인스턴스 한줄로 보기

 

💡클래스(Class)?

  : 객체를 만들어 내기 위한 설계도 혹은 틀

 

💡객체(Object)?

  : 소프트웨어 세계에 구현할 대상 / 클래스의 인스턴스

 

💡인스턴스(Instance)?

  : 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체


   클래스, 객체, 인스턴스의 개념

   클래스 

    - 객체를 만들어 내기 위한 설계도 혹은 틀

    - 연관되어 있는 변수와 메서드의 집합

 

   객체

    - 소프트웨어 세계에 구현할 대상

    - 클래스에 선언된 모양 그대로 생성된 실체

 

     특징

             - '클래스의 인스턴스(instance)'라고도 부름

             - 객체는 모든 인스턴스를 대표하는 포괄적인 의미

             - oop의 관점에서 클래스의 타입으로 선언될 때 '객체'라고 부른다

 

   인스턴스

      - 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체

              - 즉, 객체를 소프트웨어에 실체화하면 그것을 '인스턴스'라고 부름

              - 실체화된 인스턴스는 메모리에 할당된다.

 

      특징

              - 인스턴스는 객체에 포함된다고 볼 수 있다

              - oop의 관점에서 객체가 메모리에 할당되어 실제 사용될 때 '인스턴스'라고 부른다

              - 추상적인 개념(또는 명세)과 구체적인 객체 사이의 관계에 초점을 맞출 경우에 사용한다

                                    - `~의 인스턴스' 의 형태로 사용 

                                          ex) 객체는 클래스의 인스턴스다.

              중요!!!!!

                   인스턴스라는 용어는 클래스와 객체 사이의 관계로의 한정적인 용어가 아니다

                   인스턴스는 어떤 원본(추상적인 개념)으로부터 '생성된 복제본'을 의미한다.

 

 

 

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

  클래스(Class) vs 객체(Object)

 

    - 클래스는 설계도 ,

       객체는 설계도로 구현한 모든 대상

 

  객체(Object) vs 인스턴스(Instance)

    - 클래스의 타입으로 선언 시에 객체라고 부른다

      그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다

 

    - 객체는 현실 세계에 가깝고, 인스턴스는 소프트웨어 세계에 가깝다

 

     -객체는 ‘실체’, 인스턴스는 ‘관계’에 초점을 맞춘다.
                  객체를 ‘클래스의 인스턴스’라고도 부른다

 

 

이해를 안되는 이들을 위한 클래스, 객체, 인스턴스 정리

아직 잘 이해가 안된 사람들을 위해 클래스, 객체, 인스턴스를 통한 상황을 가정하겠다.

문어빵을 통해 가정을 해보자. 문어빵을 만드는 틀을 클래스, 문어빵을 객체라고 보자.

그리고 인스턴스는 문어빵 틀을 통해 만들어 낸 각각의 문어빵들이다.

 

 

 

참고자료 : 

https://victor8481.tistory.com/280 

https://javakid.tistory.com/8

https://www.slipp.net/questions/126

https://ssungkang.tistory.com/entry/Python-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%99%80-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EB%9E%80

https://blog.naver.com/PostView.nhn?blogId=good_ray&logNo=222069343755 

https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html

https://computer-science-student.tistory.com/m/319

반응형