3. 상속 (부모님께 물려받기)
처음부터 다 짜지 말고 부모님의 코드를 그대로 물려받아 재활용해 볼까요?
비슷한 클래스를 또 만들어야 할 땐 처음부터 다시 쓰지 말고, 부모님의 기능을 그대로 물려받으세요! (상속)
이때는 바탕으로를 사용하고, 부모님의 코드를 가져올 땐 부모 키워드를 씁니다.
[동물]을 설계하자:
'이름'을 [문자열]인 "이름없음"으로 정하자
처음 만들어질 때 ('새이름') 다음과 같이 하자:
'나'의 '이름'을 '새이름'으로 정하자
<울기>를 만들자 ():
"동물이 웁니다."를 출력하자
(참고) 동물을 바탕으로 강아지를 설계해요!
[동물]을 바탕으로 [강아지]를 설계하자:
처음 만들어질 때 ('새이름') 다음과 같이 하자:
부모의 <처음 만들어질 때>('새이름')을 실행하자
<울기>를 만들자 ():
틀"{'나'의 '이름'}: 멍멍!"을 출력하자
'바둑이'를 [강아지]인 [강아지]("바둑이")로 정하자
'바둑이'의 <울기>()를 실행하자
보시다시피 부모의 <울기> 대신 강아지만의 <울기>가 실행되었죠? 이를 **덮어쓰기(Overriding)**라고 한답니다.
부모의 기능은 그대로 두면서 내 입맛에 맞게 고쳐 쓸 수 있어요!
누구의 자식인지 확인하기
어떤 객체가 특정 클래스에서 만들어졌는지, 혹은 그 부모의 자식인지 궁금할 땐 의 일종이다를 사용해 보세요.
'테스트'를 [강아지]인 [강아지]("멍멍이")로 정하자
만약 ('테스트' 가 [강아지] 의 일종이다) 라면:
"이 객체는 강아지입니다!"를 출력하자
만약 ('테스트' 가 [동물] 의 일종이다) 라면:
"강아지는 동물이기도 하죠!"를 출력하자
강아지는 동물을 바탕으로 만들어졌기 때문에, [강아지]의 일종이기도 하고 [동물]의 일종이기도 해요!