파이썬에서는 상속(Inheritance)
이라는 개념이 존재한다.
부모가 자식에게 재산이나 지위를 물려준다는 상속의 의미처럼, 하나의 클래스가 다른 클래스로부터 메소드와 속성을 그대로 물려받아 사용할 수 있게 되는데 이 때 자신의 메소드와 속성을 물려주는 클래스를 부모 클래스(Parent Class)
또는 상위 클래스(Super class)
라고 한다. 반대로 그것을 물려받아서 사용하는 클래스는 자식 클래스(Child Class)
또는 하위 클래스(Sub Class)
라고 부른다.
파이썬에서 자식 클래스의 괄호 안에 부모 클래스를 명시하는 것으로 상속을 구현할 수 있다. 그렇게하면 자식 클래스에서는 부모 클래스의 모든 메서드와 속성을 자유롭게 사용할 수 있으며, 그에 더해 새로운 메서드를 추가하거나 기존 메서드의 내용을 변경하는 것도 가능하다.
상속받은 메서드의 기능을 그대로 사용할 때도 있지만, 자식 클래스에서 필요에 맞게 변경해서 사용해야 하는 경우가 많은데 상속받은 메서드의 내용을 자식 클래스에서 변경하여 사용하는 것을 오버라이딩(Overriding)
이라고 한다.
덤) 자식클래스에서 부모클래스의 내용을 사용하고 싶은 경우 super()
를 이용한다.
class Animal():
def __init__(self, name):
self.name = name
def speak(self):
return "동물이 울음소리를 냅니다"
class Dog(Animal):
def __init__(self, name, age):
super().__init__(name)
self.age = age
def walk(self):
return "산책을 합니다."
def speak(self):
return "멍멍!"
Dog
클래스는 Animal
클래스의 상속을 받는 자식클래스이며 Animal
클래스의 메소드를 상속받아 이용하는 것을 볼 수 있다. speak 메소드는 오버라이드 되어 그 내용이 변한 것도 확인 할 수 있다.