반응형
📌 기반 클래스(Base Class)와 파생 클래스(Derived Class)
객체지향 프로그래밍(OOP)에서 기반 클래스(Base Class)와 파생 클래스(Derived Class)는 상속(Inheritance) 개념을 통해 서로 연결됩니다.
- 기반 클래스(Base Class, 부모 클래스): 다른 클래스에 공통 기능을 제공하는 기본 클래스
- 파생 클래스(Derived Class, 자식 클래스): 기반 클래스를 상속받아 확장하거나 새로운 기능을 추가하는 클래스
🚀 1. 기본 개념
✅ 기반 클래스(Base Class)
- 상속을 통해 다른 클래스에서 공통으로 사용할 기능을 제공하는 클래스
- 코드 재사용성을 높여 중복을 줄임
- 직접 객체를 생성하기보다는, 파생 클래스에서 활용됨
✅ 파생 클래스(Derived Class)
- 기반 클래스를 상속받아 기능을 확장하거나 수정 가능
- 기존의 메서드를 **오버라이딩(Overriding)**하여 기능을 변경할 수 있음
- super()를 사용하여 부모 클래스의 기능을 호출할 수도 있음
📌 2. Python에서 상속 구현
✅ 기본 상속 구조
# 기반 클래스 (부모 클래스)
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return "소리를 낼 수 있습니다."
# 파생 클래스 (자식 클래스)
class Dog(Animal):
def speak(self): # 부모 클래스의 메서드를 오버라이딩
return "멍멍!"
# 객체 생성 및 테스트
dog = Dog("바둑이")
print(dog.name) # 바둑이
print(dog.speak()) # 멍멍!
📌 출력 결과
바둑이
멍멍!
✅ 파생 클래스에서 super() 사용
super()를 사용하면 부모 클래스의 기능을 유지하면서 추가 기능을 구현할 수 있습니다.
class Cat(Animal):
def __init__(self, name, color):
super().__init__(name) # 부모 클래스의 생성자 호출
self.color = color
def speak(self):
return "야옹~"
cat = Cat("나비", "하얀색")
print(cat.name) # 나비
print(cat.color) # 하얀색
print(cat.speak()) # 야옹~
📌 출력 결과
나비
하얀색
야옹~
📌 3. 메서드 오버라이딩(Method Overriding)
- 파생 클래스에서 부모 클래스의 메서드를 수정하여 새로운 기능을 추가하는 것
- 같은 이름의 메서드를 다시 정의하면, 자식 클래스의 메서드가 우선 실행됨
class Animal:
def speak(self):
return "소리를 낼 수 있습니다."
class Dog(Animal):
def speak(self): # 부모 클래스의 메서드를 오버라이딩
return "멍멍!"
dog = Dog()
print(dog.speak()) # 멍멍!
📌 출력 결과
멍멍!
🔥 부모 클래스의 speak()가 아니라, 자식 클래스의 speak()가 실행됨!
📌 4. 다중 상속(Multiple Inheritance)
Python에서는 여러 개의 기반 클래스를 상속받을 수도 있습니다.
class Animal:
def move(self):
return "이동할 수 있습니다."
class Flyable:
def fly(self):
return "날 수 있습니다."
# 다중 상속
class Bird(Animal, Flyable):
pass # 별도 메서드 정의 없이 부모 클래스 기능을 그대로 사용
bird = Bird()
print(bird.move()) # 이동할 수 있습니다.
print(bird.fly()) # 날 수 있습니다.
📌 출력 결과
이동할 수 있습니다.
날 수 있습니다.
🔹 Bird 클래스는 Animal과 Flyable의 기능을 모두 상속받음!
📌 5. 기반 클래스 vs 파생 클래스 비교
구분 기반 클래스(Base Class) 파생 클래스(Derived Class)
정의 | 공통 기능을 정의하는 클래스 | 기반 클래스를 상속받아 확장 |
역할 | 상속을 통해 코드 재사용성 증가 | 기능 추가 및 변경 (오버라이딩) |
객체 생성 | 직접 생성하지 않는 경우 많음 | 주로 객체를 생성하여 사용 |
예제 | class Animal: | class Dog(Animal): |
✅ 정리
✔ 기반 클래스(Base Class): 공통 기능을 정의하는 부모 클래스
✔ 파생 클래스(Derived Class): 부모 클래스를 상속받아 기능을 확장하는 자식 클래스
✔ 오버라이딩(Overriding): 부모 클래스의 메서드를 자식 클래스에서 재정의하여 기능을 변경
✔ super() 사용: 부모 클래스의 기능을 그대로 유지하면서 확장 가능
✔ 다중 상속(Multiple Inheritance): 여러 부모 클래스를 상속받을 수도 있음
🚀 상속을 사용하면 코드 재사용성이 높아지고, 유지보수가 쉬워진다!
'십대를 위한 코딩 > 십대를 위한 파이썬' 카테고리의 다른 글
파이썬 리스트 vs 넘파이 배열(Numpy ndarray) 차이 (1) | 2025.02.22 |
---|---|
파이썬의 철학 (0) | 2025.02.22 |
두 코드(mangling1.py vs mangling2.py)의 차이 (2) | 2025.02.20 |
VS Code에서 Python 확장(extension) 설치에 대한 설명 (0) | 2025.02.19 |
파이썬 딕셔너리(Dictionary) 메서드 정리 (0) | 2025.02.18 |