상속(Inheritance)와 오버라이딩(Overriding)

data_hamster·2023년 4월 29일
0

파이썬에는 상속(Inheritance)이라는 개념이 존재합니다. 부모가 자식에게 재산이나 지위를 물려준다는 상속의 의미처럼, 하나의 클래스가 다른 클래스로부터 메소드와 속성을 그대로 물려받아 사용할 수 있는 기능을 제공합니다. 이 때 자신의 메소드와 속성을 물려주는 클래스를 부모 클래스(Parent Class) 또는 상위 클래스(Super class)라고 지칭합니다. 반대로 그것을 물려받아서 사용하는 클래스는 자식 클래스(Child Class) 또는 하위 클래스(Sub Class)라고 부릅니다.
파이썬에서 상속을 구현하기 위한 방법은 자식 클래스의 괄호 안에 부모 클래스를 명시하는 것입니다. 그렇게하면 자식 클래스에서는 부모 클래스의 모든 메서드와 속성을 자유롭게 사용할 수 있으며, 그에 더해 새로운 메서드를 추가하거나 기존 메서드의 내용을 변경하는 것도 가능합니다.
다음은 부모 클래스인 Animal 클래스를 정의하고, 자식 클래스인 Dog 클래스가 Animal 클래스를 상속받도록 구현하는 예시코드 입니다.

class Animal:
    def __init__(self, name):
        self.name = name
def speak(self):
    return "동물이 울음소리를 냅니다"

class Dog(Animal):
def speak(self):
return "멍멍!"

my_dog = Dog("초코")
print(my_dog.name)
print(my_dog.speak())


>위 예시에서 Dog 클래스는 Animal 클래스를 상속받았으므로, Animal 클래스의 모든 속성과 메서드를 상속받습니다. 특히 Dog 클래스에서 speak 메서드의 내용을 변경하여 재정의하였기 때문에, speak 메서드를 호출하였을 때 멍멍! 이라는 결과가 출력되는 것을 알 수 있습니다.
바로 이와 같이 상속받은 메서드의 내용을 자식 클래스에 변경하여 사용하는 것을 오버라이딩 이라고 합니다. 상속받은 메서드의 기능을 그대로 사용할 때도 있지만, 자식 클래스에서 필요에 맞게 변경해서 사용하는 경우가 많습니다.
상속을 활용하면 코드의 재사용성을 높일 수 있고, 클래스간의 계층 구조를 만들어 관련성 있는 클래스들을 그룹화하여 관리할 수 있다는 장점이 있습니다. 또한, 부모 클래스의 코드를 다시 반복하여 작업할 필요가 없어 새로운 클래스를 작성하는 데 필요한 코드의 양을 줄일 수 있습니다.
profile
반갑습니다 햄스터 좋아합니다

0개의 댓글