본문 바로가기
I LEARNED/TIL

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

by veganwithbacon 2022. 10. 18.
반응형

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

반응형

'I LEARNED > TIL' 카테고리의 다른 글

[TIL] gcc로 C언어 컴파일  (1) 2023.04.11
[TIL] 정규화  (0) 2022.11.03
[TIL] 최종프로젝트 ERD설계  (0) 2022.10.10
[TIL] 참여하기와 게시물2  (1) 2022.10.10
[TIL] 참여하기와 게시물  (0) 2022.10.09

댓글