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