다형성이 뭐였지?
똑같은 지시를 내렸는데, 누가 그 지시를 받느냐에 따라 다른 행동을 하는 마법 같은 거라고 했지?
악기 연주 예시:
음악 연주회가 열렸다고 상상해 봐. 지휘자 아저씨가 모든 악기 연주자들에게 "연주 시작!"이라고 똑같이 외쳤어.
- 피아노 연주자는 피아노를 "딩동댕~" 하고 아름답게 연주할 거야.
- 기타 연주자는 기타를 "징징징~" 하고 신나게 연주하겠지?
- 북 연주자는 북을 "둥둥둥!" 하고 힘차게 칠 거야.
지휘자 아저씨는 똑같이 "연주 시작!"이라고 말했지만, 피아노, 기타, 북은 각자 자기만의 소리를 내지? 이것도 다형성이야!
파이썬 코드로 악기 연주 마법을 보자!
Python
# 모든 악기가 '소리내기' 재주를 가지고 있다고 알려주는 설계도야.
class 악기:
def 소리내기(self):
print("악기는 각자 다른 소리를 내요!")
# '악기' 설계도를 보고 만든 '피아노'
class 피아노(악기): # 피아노는 악기의 한 종류!
def 소리내기(self): # 피아노만의 특별한 소리내기!
print("딩동댕~ 아름다운 피아노 소리!")
# '악기' 설계도를 보고 만든 '기타'
class 기타(악기): # 기타도 악기의 한 종류!
def 소리내기(self): # 기타만의 특별한 소리내기!
print("징~ 징~ 신나는 기타 소리!")
# '악기' 설계도를 보고 만든 '플루트'
class 플루트(악기): # 플루트도 악기의 한 종류!
def 소리내기(self): # 플루트만의 특별한 소리내기!
print("휘리리릭~ 맑은 플루트 소리!")
# 자, 이제 여러 악기들을 준비해보자!
우리집_피아노 = 피아노()
내_통기타 = 기타()
예쁜_플루트 = 플루트()
# 악기들에게 소리를 내보라고 해볼까?
print("피아노야, 연주해봐!")
우리집_피아노.소리내기()
print("\n통기타야, 연주해봐!")
내_통기타.소리내기()
print("\n플루트야, 연주해봐!")
예쁜_플루트.소리내기()
print("\n--- 작은 음악회 시작! ---")
# 여러 악기를 모아보자.
우리_악단 = [우리집_피아노, 내_통기타, 예쁜_플루트]
for 하나의_악기 in 우리_악단:
# 똑같이 '소리내기()' 라고 했는데,
# '하나의_악기'가 피아노일 때, 기타일 때, 플루트일 때 각각 다른 소리가 나!
# 이것도 다형성 마법이지!
하나의_악기.소리내기()
코드 설명:
- class 악기:: 모든 악기가 공통으로 가질 수 있는 재주인 소리내기()를 정의했어.
- class 피아노(악기):, class 기타(악기):, class 플루트(악기):: 각 악기들이 악기의 특징을 물려받고, 자신만의 독특한 소리내기() 방법을 가지도록 만들었어.
- 우리집_피아노 = 피아노() 처럼 각 악기들을 실제로 만들었지.
- 우리_악단 = [우리집_피아노, 내_통기타, 예쁜_플루트] : 여러 악기를 우리_악단이라는 목록에 함께 담았어.
- for 하나의_악기 in 우리_악단: 이 부분에서 마법이 일어나!
- 하나의_악기.소리내기()라는 똑같은 코드를 사용하는데도,
- 하나의_악기가 피아노일 때는 피아노 소리가 나고,
- 하나의_악기가 기타일 때는 기타 소리가 나고,
- 하나의_악기가 플루트일 때는 플루트 소리가 나지!
이렇게 똑같은 소리내기() 요청에 대해 각 악기가 자신만의 방식으로 연주하는 것, 이것이 바로 다형성이란다! 어때, 재미있지?
'Python' 카테고리의 다른 글
파이썬 파일 CRUD 예제(예외처리 적용) (0) | 2025.05.14 |
---|---|
파이썬 예외 처리 (0) | 2025.05.14 |
파이썬 다형성 예제 (1) | 2025.05.14 |
파이썬 상속 예제 (0) | 2025.05.14 |
함수 정의 및 호출 (0) | 2025.05.12 |