클래스의 기능을 확장하는 상속
상속(Inheritance)
은 객체지향 프로그래밍에서 중요한 개념 중 하나로, 기존 클래스의 기능을 새로운 클래스에서 재사용 및 확장합니다.
상속을 잘 활용하면 코드의 재사용성이 높이고, 체계적으로 유지보수하기 쉬운 코드를 작성할 수 있습니다.
부모 클래스와 자식 클래스
상속에서는 기존 클래스를 부모 클래스
(또는 슈퍼 클래스)라고 하고, 이 클래스를 상속받아 새로 만들어지는 클래스를 자식 클래스
(또는 서브 클래스)라고 합니다.
자식 클래스는 부모 클래스의 속성과 메서드를 그대로 물려받을 수 있으며, 필요에 따라 새 속성이나 메서드를 추가하거나 기존 메서드를 변경할 수 있습니다.
class Vehicle:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def start_engine(self):
print(f"{self.brand} {self.model}의 엔진 시동")
# Vehicle 클래스를 상속받아 Car 클래스를 만듦
class Car(Vehicle):
def __init__(self, brand, model, year):
super().__init__(brand, model) # 부모 클래스의 생성자 호출
self.year = year
def honk(self):
print(f"{self.brand} {self.model}가 경적을 울림")
# my_car 객체 생성
my_car = Car("브랜드A", "모델B", 2024)
# 출력: 브랜드A 모델B의 엔진 시동
my_car.start_engine()
# 출력: 브랜드A 모델B가 경적을 울림
my_car.honk()
여기서 Car
클래스는 Vehicle
클래스를 상속받아 생성됩니다.
Car 클래스는 Vehicle 클래스의 기능을 그대로 사용하면서, 추가로 honk
메서드를 정의합니다.
상속을 왜 사용할까요?
상속을 사용하면 중복된 코드를 줄이고, 공통된 기능을 부모 클래스에 작성한 후, 자식 클래스에서 이를 재사용할 수 있습니다.
예를 들어 다양한 종류의 차량을 나타내는 클래스를 작성할 때, 공통된 기능(예: 엔진 시동)을 부모 클래스에 정의하고 각 차량의 특성에 맞는 기능은 자식 클래스에서 따로 정의할 수 있습니다.
메서드 오버라이딩
자식 클래스에서 부모 클래스의 메서드를 새롭게 정의하는 것을 메서드 오버라이딩(Method Overriding)
이라고 합니다.
메서드 오버라이딩을 수행할 경우에는 부모의 메서드와 동일한 이름을 사용하며, self
를 포함해야 합니다.
이를 통해 자식 클래스는 부모 클래스의 기능을 자신에게 맞게 재정의할 수 있습니다.
class ElectricCar(Car):
def start_engine(self):
print(f"{self.brand} {self.model}의 전기 모터가 켜짐")
ElectricCar
클래스는 Car
클래스를 상속받았지만, start_engine
메서드를 오버라이딩하여 전기 자동차에 맞게 동작을 변경했습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!