더북(TheBook)

그다음 지상 유닛 클래스의 객체를 하나 만들고 show_stats 함수를 호출해 보겠습니다.

> ground_unit = GroundUnit()
> ground_unit.show_stats()
50
10
10
1

지상 유닛 클래스에는 life, speed, power, defense라는 변수가 없음에도 부모 클래스인 유닛 클래스에 이 변수들이 있으므로 이를 사용할 수 있습니다. 함수도 마찬가지입니다. 지상 유닛 객체에는 move 함수가 없지만 부모 클래스에 있으므로 사용할 수 있습니다.

하지만 부모한테 상속받았다고 무조건 그대로 사용해야 하는 것은 아닙니다. 다음 코드는 유닛 클래스를 상속받는 공중 유닛 클래스입니다. 부모 클래스에 있는 move 함수를 상속받았지만, 공중 유닛만 move 함수로 변형하여 사용할 수 있습니다. 이미 부모 클래스에 있는 동일한 함수를 덮어 쓴다고 해서 이를 오버라이딩(overriding)이라고도 합니다. 또 fly라는 자신만의 함수를 만들어 부모 클래스에서 좀 더 상세화된 클래스가 되었습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.