클래스와 객체의 관계, 붕어빵틀과 붕어빵의 관계?

junhyeong·2022년 9월 30일
0

항상 인터넷 구글링으로만 정보를 찾아보다가 책으로 공부하니 새롭게 깨닫는게 많다는걸 느낀다.

그중에 오늘은 내가 잘못알고 있었던걸 하나 발견했기에 그것에 대해서 얘기해보려고 한다.

클래스와 객체의 관계

클래스와 객체의 관계를 구글링하면 붕어빵과 붕어빵틀이라는 비유가 많이 나온다. 나도 1주차, 2주차때 그런 글을 많이 접했기에 당연히 클래스와 객체는 붕어빵과 붕어빵틀의 관계라고 생각했다.
하지만 책을 읽고나서 이 비유보다는 다른 비유가 더 적절하다는 걸 깨달았다.

먼저 객체와 인스턴스는 같은 개념이라는 걸 알고 넘어가자

클래스를 이용해 객체(object)를 만들었다는 것을 강조할 때,
object라는 표현보다 클래스의 인스턴스라는 표현을 사용한다

객체 = 클래스의 인스턴스

그럼 클래스와 객체를 코드로 설명 해보겠다(한글)

클래스 객체명 = new 클래스();

먼저 객체를 생성하는 코드를 작성해보았다.

그런데 여기에 붕어빵과 붕어빵 틀의 개념을 넣어보면 어떨까?

붕어빵틀 붕어빵 = new 붕어빵틀();

이 개념에 따르면 붕어빵틀을 통해 붕어빵이라는 객체를 만들어 내는게 된다.

이상하지 않은가?

만약 이상하지 않다면 우리가 평소에 객체를 생성하던 방식으로 예를 들어보겠다.

사람 홍길동 = new 사람(); 

우리는 이렇게 사람이라는 클래스로 홍길동이라는 객체를 만든다.
그런데 붕어빵 개념이 맞다면 우리는 이렇게 표현할 수 있다.

클래스:객체 = 붕어빵틀:붕어빵 = 사람:홍길동

붕어빵틀로 붕어빵을 만든다.
사람으로 홍길동을 만든다..?

붕어빵틀과 붕어빵, 그리고 사람과 홍길동의 관계가 똑같은가?

아니라는걸 느낄 수 있을 것이다

그럼 도대체 어떤 관계라는 거야?

책에서 나온 예로 예시를 들어보자면 이렇게 표현할 수 있다.

클래스:객체 = 펭귄:뽀로로 = 사람:김연아

그리고 김연아 대신에는 아이유(실체), 강호동(실체), 이병헌(실체) 등이 들어갈 수 있다.

이제 이해가 되는가?

앞의 예를 보면 펭귄이라는 개념에 뽀로로가 들어가고, 사람이라는 개념에 특정인물들이 들어간다는 걸 알 수 있다.

클래스는 분류, 객체는 실체에 대한 개념이다.

즉, 클래스는 각 객체들의 공통된 특징-속성(키, 나이 등),행동(일을 한다 등)들을 묶은 분류의 개념이라는 것이다.


공부하면 공부할수록 배울게 많다는 것도 느끼지만 제대로된 정보를 찾는게 중요하다는 생각이 든다. 오늘도 그렇듯 그동안 잘못된 정보를 알고 있었다는걸 깨달을 수 있었다. 물론 이 정보가 무조건 맞다는건 아니다.

이 글도 내가 지금까지 공부한 클래스와 객체의 관계 중 제일 적절하다는 생각이 들어 작성한 것이다.

책의 저자도 말했듯이 스스로 확인하는 습관을 들이자


- 참고자료-스프링 입문을 위한 자바 객체 지향의 원리와 이해
profile
매일매일이 성장하는 하루가 될 수 있도록!

0개의 댓글