본문 바로가기

프로그래밍 언어/파이썬

파이썬(Python) 다형성, 메서드 오버라이딩과 인터페이스

파이썬(Python) 다형성, 메서드 오버라이딩과 인터페이스

객체 지향 프로그래밍에서 다형성은 중요한 개념 중 하나입니다. 파이썬(Python)에서는 메서드 오버라이딩과 인터페이스를 통해 다형성을 구현할 수 있습니다. 이 글에서는 파이썬의 다형성을 이해하고 실전 예제를 통해 메서드 오버라이딩과 인터페이스를 어떻게 사용하는지 살펴보겠습니다.

 

 

 

1. 다형성이란?

다형성은 동일한 인터페이스를 통해 서로 다른 데이터 타입을 처리할 수 있게 하는 객체 지향 프로그래밍의 특성입니다. 이를 통해 코드의 재사용성과 유연성을 높일 수 있습니다.

 

 

2. 메서드 오버라이딩

메서드 오버라이딩은 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것을 말합니다. 이를 통해 하위 클래스는 상위 클래스의 기본 동작을 확장하거나 변경할 수 있습니다.


class Animal:
    def speak(self):
        return "Animal speaks"

class Dog(Animal):
    def speak(self):
        return "Dog barks"

animal = Animal()
dog = Dog()
print(animal.speak())  # 출력: Animal speaks
print(dog.speak())     # 출력: Dog barks
            

 

 

3. 인터페이스 구현

파이썬에서는 공식적인 인터페이스를 지원하지 않지만, 추상 클래스(ABC)를 사용하여 비슷한 기능을 구현할 수 있습니다. 추상 클래스는 하나 이상의 추상 메서드를 포함하며, 이를 상속받는 클래스는 반드시 이 추상 메서드를 구현해야 합니다.


from abc import ABC, abstractmethod

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

class Dog(Animal):
    def speak(self):
        return "Dog barks"

dog = Dog()
print(dog.speak())  # 출력: Dog barks
            

 

 

 

 

4. 실전 예제

아래 예제는 다양한 동물 클래스가 동일한 인터페이스를 사용하여 각기 다른 소리를 내는 모습을 보여줍니다.


class Cat(Animal):
    def speak(self):
        return "Cat meows"

class Cow(Animal):
    def speak(self):
        return "Cow moos"

animals = [Dog(), Cat(), Cow()]
for animal in animals:
    print(animal.speak())
            

 

 

5. 결론

파이썬(Python)에서 다형성을 이해하고 활용하는 것은 객체 지향 프로그래밍의 강력한 기능을 사용하는 데 필수적입니다. 메서드 오버라이딩과 추상 클래스를 통해 다양한 상황에서 코드의 재사용성과 유연성을 높일 수 있습니다. 다양한 예제를 통해 실습해보세요.