공통점을 물려받기, 상속
객체로 '하나의 것'을 만들었죠(12강). 그런데 개, 고양이, 새를 객체로 만들면 이름, 나이, 먹기가 자꾸 똑같이 겹쳐요. 겹치는 공통점을 한 곳에 모아 두고 저마다 물려받게 하는 게 상속이에요.
자꾸 겹치는 부분
개도, 고양이도, 새도 다 객체로 만들 수 있어요.
그런데 셋을 나란히 놓고 보면,
이름·나이·먹기는 셋 다 똑같이 들어가요.
같은 걸 세 번 적는 셈이죠.
종류가 늘수록 이 겹침은 더 커져요.
개·고양이·새를 보세요. 똑같이 겹치는 이름표가 함께 빛나요.
겹치는 부분이 한눈에 보이죠.
이렇게 똑같은 걸 객체마다 또 쓰면
하나를 고칠 때 전부 일일이 고쳐야 해요.
그럼 이 공통점을 어디다 모아 두면 좋을까요?
공통점을 위로 모으기
겹치는 이름·나이·먹기를
위쪽 한 곳으로 끌어 올려요.
그 자리에 '동물'이라는 부모를 두는 거죠.
이제 공통점은 동물 한 곳에만 있어요.
개·고양이·새는 그 아래 자식이 되고요.
버튼을 눌러 공통점을 위로 모아 보세요. '동물' 부모 하나가 생겨요.
공통점을 한 군데로 모으니
자식 쪽은 훨씬 가벼워졌어요.
그런데 자식들은 이제 이름·나이·먹기가 없잖아요?
사라진 게 아니라, 부모한테서 받아 와요.
부모 것을 그대로 물려받아요
자식은 부모가 가진 걸 자동으로 다 가져요.
개는 '동물'의 이름·나이·먹기를
다시 안 적어도 그대로 물려받아요.
그래서 개는 이미 어엿한 동물이에요.
받아 온 거지, 베껴 쓴 게 아니죠.
자식을 골라 보세요. 부모의 이름표가 아래로 내려와 그대로 채워져요.
개도, 고양이도, 새도
부모 동물에게서 똑같이 물려받았어요.
근데 셋이 똑같기만 하면 종류가 아니죠.
개는 짖고, 새는 날아요. 그건 어떻게 더할까요?
받은 위에 자기 것을 더해요
물려받은 공통점은 그대로 두고,
그 위에 자기만의 것을 얹어요.
개는 '짖기'를, 새는 '날기'를 더하죠.
부모는 같지만 더한 게 달라서
개와 새가 서로 다른 종류가 돼요.
자식에 자기만의 이름표를 더해 보세요. 물려받은 것과 색이 달라요.
이제 개는 '동물의 공통점 + 짖기'예요.
받은 것과 더한 것이 한 몸이 됐죠.
공통은 부모에, 차이는 자식에.
이 구조 덕에 마지막으로 큰 게 하나 따라와요.
한 번 고치면, 다 같이 바뀌어요
상속의 진짜 힘은 여기예요.
부모 '동물'에 '잠자기'를 하나 더하면,
개도 고양이도 새도 단번에 잘 수 있게 돼요.
자식을 일일이 안 고쳐도 다 같이 바뀌죠.
중복이 사라지니 실수도 같이 줄어요.
값에서 시작해 객체로 '것'을 만들고,
상속으로 그 것들을 가지런히 묶었어요.
이제 우리 손에는 꽤 큰 프로그램이 있죠.
그런데 프로그램은 꼭 어딘가 어긋나기 마련이에요.
다음엔 그 어긋남을 찾아 고치는 법으로 가요.