2023. 11. 8. 20:04ㆍ개발 문서/Python
상속(Inheritance)과 다형성(Polymorphism)은 객체 지향 프로그래밍(OOP)의 핵심 개념 중 두 가지입니다. 이러한 개념은 클래스와 객체를 조직화하고 코드를 재사용하는 데 도움을 줍니다.
상속 (Inheritance):
상속은 클래스 간의 계층 구조를 정의하고 부모 클래스(상위 클래스 또는 슈퍼 클래스)에서 정의된 속성과 메서드를 자식 클래스(하위 클래스 또는 서브 클래스)에서 상속받는 개념을 의미합니다. 이로써 코드 재사용성이 증가하고 계층적 구조를 구축할 수 있습니다.
- 부모 클래스 (슈퍼 클래스): 기본 클래스로, 속성과 메서드를 정의합니다.
- 자식 클래스 (서브 클래스): 부모 클래스에서 상속받은 속성과 메서드를 확장하거나 재정의하여 새로운 기능을 추가합니다.
예를 들어, 다음은 동물을 나타내는 Animal
클래스와 그 클래스를 상속받는 Dog
클래스의 간단한 예입니다:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Woof!"
# 부모 클래스의 인스턴스 생성
animal = Animal("Generic Animal")
print(animal.name) # 출력: "Generic Animal"
# 자식 클래스의 인스턴스 생성
dog = Dog("Fido")
print(dog.name) # 출력: "Fido"
print(dog.speak()) # 출력: "Woof!"
다형성 (Polymorphism):
다형성은 동일한 이름의 메서드가 서로 다른 클래스에서 다르게 구현될 수 있음을 의미합니다. 다형성을 통해 여러 객체를 동일한 인터페이스로 다룰 수 있습니다. 이것은 코드의 유연성을 향상시키고 객체 간의 상호 교환성을 제공합니다.
다형성의 한 가지 예는 메서드 오버라이딩(Method Overriding)입니다. 자식 클래스에서 부모 클래스의 메서드를 재정의하여 자식 클래스의 특정 동작을 정의할 수 있습니다.
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
animals = [Dog(), Cat()]
for animal in animals:
print(animal.speak())
위의 코드에서 speak
메서드는 모든 Animal
클래스의 하위 클래스에서 재정의되었으며, animals
리스트의 각 요소는 서로 다른 하위 클래스의 객체를 가집니다. 그럼에도 불구하고 speak
메서드를 호출하는 코드는 동일하게 작동하며, 각 객체의 특정 동작을 수행합니다.
상속과 다형성은 객체 지향 프로그래밍을 효율적으로 사용하고 코드를 구조화하는 데 중요한 개념이며, 복잡한 시스템을 관리하고 확장하는 데 도움을 줍니다.
'개발 문서 > Python' 카테고리의 다른 글
NumPy와 배열 처리 (0) | 2023.11.08 |
---|---|
모듈과 패키지 (0) | 2023.11.08 |
클래스와 객체 (0) | 2023.11.08 |
객체 지향 프로그래밍 (0) | 2023.11.08 |
문자열 다루기 (0) | 2023.11.08 |