[python] 추상 클래스를 사용한 다형성 구현

다형성(polymorphism)은 객체 지향 프로그래밍의 중요한 특징 중 하나입니다. 파이썬에서는 추상 클래스를 활용하여 다형성을 구현할 수 있습니다. 이 글에서는 추상 클래스를 사용하여 다형성을 구현하는 방법에 대해 알아보겠습니다.

추상 클래스란 무엇인가?

추상 클래스는 인스턴스를 생성할 수 없는 클래스로, 메소드의 목록만을 가지고 있습니다. 파생 클래스에서는 추상 클래스를 상속받아 모든 추상 메소드를 구현해야 합니다. 파이썬에서는 abc 모듈을 사용하여 추상 클래스를 정의할 수 있습니다.

추상 클래스를 사용한 다형성의 예시

다음은 동물을 나타내는 Animal 추상 클래스와 이를 상속받은 DogCat 클래스의 예시입니다.

from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        print("멍멍!")

class Cat(Animal):
    def make_sound(self):
        print("야옹!")

위 예시에서 Animal은 추상 클래스로, make_sound 메소드를 추상 메소드로 가지고 있습니다. 이후 DogCat 클래스에서는 Animal 클래스를 상속받아 추상 메소드를 구현하여 각각의 소리를 출력하고 있습니다.

다형성의 활용

이제 DogCat 객체를 생성하고 각각의 소리를 출력해봅시다.

dog = Dog()
cat = Cat()

dog.make_sound()  # 출력: 멍멍!
cat.make_sound()  # 출력: 야옹!

위 예시에서 DogCat 객체는 모두 Animal 타입으로 사용될 수 있으며, 각자의 특성에 맞는 소리를 출력합니다. 이것이 바로 다형성의 예시입니다.

결론

추상 클래스를 사용하여 다형성을 구현하면 코드의 유연성을 높일 수 있습니다. 파이썬의 동적 타이핑(dynamic typing) 특성과 함께 다형성을 적절히 활용하여 객체 지향 프로그래밍의 장점을 최대한 발휘할 수 있습니다.