[python] 추상 클래스를 사용한 다형성 구현
다형성(polymorphism)은 객체 지향 프로그래밍의 중요한 특징 중 하나입니다. 파이썬에서는 추상 클래스를 활용하여 다형성을 구현할 수 있습니다. 이 글에서는 추상 클래스를 사용하여 다형성을 구현하는 방법에 대해 알아보겠습니다.
추상 클래스란 무엇인가?
추상 클래스는 인스턴스를 생성할 수 없는 클래스로, 메소드의 목록만을 가지고 있습니다. 파생 클래스에서는 추상 클래스를 상속받아 모든 추상 메소드를 구현해야 합니다. 파이썬에서는 abc 모듈을 사용하여 추상 클래스를 정의할 수 있습니다.
추상 클래스를 사용한 다형성의 예시
다음은 동물을 나타내는 Animal 추상 클래스와 이를 상속받은 Dog와 Cat 클래스의 예시입니다.
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 메소드를 추상 메소드로 가지고 있습니다. 이후 Dog와 Cat 클래스에서는 Animal 클래스를 상속받아 추상 메소드를 구현하여 각각의 소리를 출력하고 있습니다.
다형성의 활용
이제 Dog와 Cat 객체를 생성하고 각각의 소리를 출력해봅시다.
dog = Dog()
cat = Cat()
dog.make_sound() # 출력: 멍멍!
cat.make_sound() # 출력: 야옹!
위 예시에서 Dog와 Cat 객체는 모두 Animal 타입으로 사용될 수 있으며, 각자의 특성에 맞는 소리를 출력합니다. 이것이 바로 다형성의 예시입니다.
결론
추상 클래스를 사용하여 다형성을 구현하면 코드의 유연성을 높일 수 있습니다. 파이썬의 동적 타이핑(dynamic typing) 특성과 함께 다형성을 적절히 활용하여 객체 지향 프로그래밍의 장점을 최대한 발휘할 수 있습니다.